Etapas de integração do Freshchat iOS SDK

Criada por Isabelle Lemes, Modificado em Wed, 01 Mar 2023 na (o) 09:31 AM por Isabelle Lemes

O Freshchat SDK contém uma fatia para a arquitetura arm64 e suporta apenas iOS 8.0 e superior. Siga as etapas abaixo para integrar o Freshchat ao seu aplicativo iOS


Obtenha seu APP ID, APP Key e Domain

Sua conta do Freshchat está associada a um ID de APP exclusivo e a uma chave de APP que é usada para integrar seu SDK móvel ao Freshchat.


Vá para Admin > Mobile SDK . Você pode encontrar seu APP ID , APP Key  e Domain aqui. 




1. Adicione o Freshchat SDK ao seu projeto

Adicione o Freshchat ao seu projeto em uma única etapa, atualizando seu podfile para incluir o Freshchat .


source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
target 'Your project target' do            target 'Your project target' do
pod 'FreshchatSDK''
end
Objective-C


Objetivo C


    Importe "FreshchatSDK.h" em seu arquivo AppDelegate.m


Rápido

    

Importe "FreshchatSDK.h" em seu arquivo de cabeçalho de ponte.



Ou, se você não estiver usando cocoapods, poderá adicionar o Freshchat SDK aqui ( https://github.com/freshworks/freshchat-ios ) e arrastar e soltar a pasta FreshchatSDK.xcframework em um projeto. A adição de estruturas necessárias para arrastar e soltar são -


"Fundação", "AVFoundation", "AudioToolbox", "CoreMedia", "CoreData", "ImageIO", "Fotos", "Configuração do Sistema", "Segurança", "WebKit", "CoreServices"


Defina os sinalizadores "-all_load", "-objC" em Configurações do projeto, Geral > Configurações de compilação > Outros sinalizadores do vinculador.


2. Inicialize o SDK

Inicialize o Freshchat colando o seguinte snippet em seu didFinishLaunchingWithOptions em AppDeleage.m ou AppDelegate para ObjC e Swift, respectivamente.


Objetivo C

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)
([[[UIDevice currentDevice] systemVersion]
compare:v 
options:NSNumericSearch] != NSOrderedAscending)
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)
launchOptions
{   //Initialize Freshchat
⁦    FreshchatConfig *config = [[FreshchatConfig alloc]initWithAppID:@"YOUR-APP-ID"  andAppKey:@"YOUR-APP-KEY"

⁦    config.domain = @"YOUR-DOMAIN
⁩
⁦    [[Freshchat sharedInstance] initWithConfig:conf;⁩
⁦    return
}
Objective-C

Rápido

func application(_ application: UIApplication,
didFinishLaunchingWithOptions 
launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {    let freshchatConfig:FreshchatConfig = FreshchatConfig.init(appID: "YOUR-APP-ID", andAppKey: "YOUR-APP-KEY")    config.domain = "YOUR-DOMAIN"    Freshchat.sharedInstance().initWith(freshchatConfig)    return true
}
Objective-C


2.1. Inicializar opções de configuração

Você pode ativar/desativar recursos como mensagens multimídia na inicialização. Use o snippet abaixo antes de chamar o método initWithConfig: para configurar os recursos do Freshchat conforme necessário.


Objetivo C

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)
([[[UIDevice currentDevice] systemVersion] compare:v
options:NSNumericSearch] != NSOrderedAscending)
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    /* Initialize Freshchat*/    FreshchatConfig *config = [[FreshchatConfig alloc]initWithAppID:@"YOUR-APP-ID"  andAppKey:@"YOUR-APP-KEY"];    config.domain = @"YOUR-DOMAIN";    config.gallerySelectionEnabled = YES; // set NO to disable picture
selection for messaging via gallery    config.cameraCaptureEnabled = YES; // set NO to disable picture selection for messaging via camera    config.teamMemberInfoVisible = YES; // set to NO to turn off showing team member avatar. To customize the avatar shown, use the theme file    config.showNotificationBanner = YES; // set to NO if you don't want to show the in-app notification banner upon receiving a new message while the app is open    config.responseExpectationVisible = YES; //set NO to hide it if you want to hide the response expectation for the Topic    [[Freshchat sharedInstance] initWithConfig:config];    return YES;
}
Objective-C

Rápido

func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {    let freshchatConfig:FreshchatConfig = FreshchatConfig.init(appID: "YOUR-APP-ID", andAppKey: "YOUR-APP-KEY")    config.domain = "YOUR-DOMAIN"    freshchatConfig.gallerySelectionEnabled = true; // set FALSE to disable picture selection for messaging via gallery    freshchatConfig.cameraCaptureEnabled = true; // set FALSE to disable picture selection for messaging via camera    freshchatConfig.teamMemberInfoVisible = true; // set to FALSE to turn off showing a team member avatar. To customize the avatar shown, use the theme file    freshchatConfig.showNotificationBanner = true; // set to FALSE if you don't want to show the in-app notification banner upon receiving a new message while the app is open    freshchatConfig.responseExpectations = true; //set to FALSE if you want to hide the response expectations for the Topics    Freshchat.sharedInstance().initWith(freshchatConfig)    return true
}
Objective-C

3. Informações do usuário


3.1 Atualizar as informações do usuário

Você pode obter informações básicas do usuário a qualquer momento para fornecer mais contexto sobre o usuário quando seus agentes de suporte estiverem trocando mensagens com eles. 


/* 

* Os três métodos a seguir são para identificar um usuário.

* Essas propriedades do usuário poderão ser visualizadas no painel da Web do Freshchat.

*/


Objetivo C

// Create a user object
FreshchatUser *user = [FreshchatUser sharedInstance];
// To set an identifiable first name for the user
user.firstName = @"John";
// To set an identifiable last name for the user
user.lastName = @"Doe";
//To set user's email id
user.email = @"john.doe.1982@mail.com";
//To set user's phone number
user.phoneCountryCode=@"00";
user.phoneNumber = @"9999999999";
[[Freshchat sharedInstance] setUser:user];
Objective-C

Rápido

// Create a user object
let user = FreshchatUser.sharedInstance();
// To set an identifiable first name for the user
user?.firstName = "John"
// To set an identifiable last name for the user
user?.lastName = "Doe"
//To set user's email id
user?.email = "john.doe.1982@mail.com"
//To set user's phone number
user?.phoneCountryCode="00"
user?.phoneNumber = "9999999999"
Freshchat.sharedInstance().setUser(user)
Objective-C

3.2 Atualizar Propriedades do Usuário (Metadados)

Você pode capturar e enviar metadados adicionais sobre o usuário e os eventos no aplicativo, o que também se torna uma forma de segmentar seus usuários para posteriormente enviar mensagens para eles.


Objetivo C

//You can set custom user properties for a particular user
[[Freshchat sharedInstance] setUserPropertyforKey:@"customerType" withValue:@"Premium"];
//You can set user demographic information
[[Freshchat sharedInstance] setUserPropertyforKey:@"city" withValue:@"San Bruno"];
//You can segment based on where the user is in their journey of using your app
[[Freshchat sharedInstance] setUserPropertyforKey:@"loggedIn" withValue:@"true"];
//You can capture a state of the user that includes what the user has done in your app
[[Freshchat sharedInstance] setUserPropertyforKey:@"transactionCount" withValue:@"3"];
Objective-C

Rápido

//You can set custom user properties for a particular user
Freshchat.sharedInstance().setUserPropertyforKey("customerType", withValue: "Premium")
//You can set user demographic information
Freshchat.sharedInstance().setUserPropertyforKey("city", withValue: "San Bruno")
//You can segment based on where the user is in their journey of using your app
Freshchat.sharedInstance().setUserPropertyforKey("loggedIn", withValue: "true")
//You can capture a state of the user that includes what the user has done in your app
Freshchat.sharedInstance().setUserPropertyforKey("transactionCount", withValue: "3")
Genérico


3.3 Registrar eventos do usuário na linha do tempo


O rastreamento de eventos do usuário fornecerá mais informações e contexto sobre o(s) usuário(s) em seu aplicativo. Eventos como ações do usuário e casos de falha/erro podem ser rastreados usando esta API. Os eventos rastreados são listados na Linha do tempo de eventos no lado do agente.


Objetivo C

[[Freshchat sharedInstance] trackEvent:"Event_Name" withProperties:PropertiesDictionary];
Objective-C


Rápido

Freshchat.sharedInstance()?.trackEvent("Event_Name", withProperties: PropertiesDictionary)
Objective-C


Observação: 
1. O Freshchat permite apenas 121 eventos únicos por conta.
2. O nome do evento aceita valor de string (máximo de 32 caracteres).
3. O nome da chave de propriedade deve ser do tipo string (máximo de 32 caracteres).
4. O valor da propriedade pode ser de qualquer tipo de objeto primitivo (máximo de 256 caracteres).
5. O Freshchat permite enviar no máximo 20 propriedades por evento.

3.4 Redefinir dados do usuário

Redefina os dados do usuário ao sair ou quando for considerado apropriado com base na ação do usuário no aplicativo invocando a API resetUser.


Objetivo C

[[Freshchat sharedInstance] resetUserWithCompletion:^
{        //Completion block code here
}];
Objective-C

Rápido

Freshchat.sharedInstance().resetUser(completion: { () in            //Completion code
})
Objective-C

3.5 Restaurar conversas do usuário em navegadores/dispositivos

Para reter mensagens de bate-papo em dispositivos/sessões/plataformas, o aplicativo móvel precisa passar o mesmo id externo e restaurar a combinação de id para o usuário. Isso permitirá que os usuários capturem a conversa de qualquer uma das plataformas suportadas - Android, iOS e Web.


  • ID externo - deve (idealmente) ser um identificador exclusivo para o usuário do seu sistema, como um ID de usuário ou ID de e-mail, etc.


Observação: a ID externa não pode ser alterada depois de definida para um usuário.
  • Restaurar ID - Isso é gerado pelo Freshchat para o usuário atual, dado que um ID externo foi definido e pode ser recuperado a qualquer momento usando a API [FreshchatUser sharedInstance].restoreID. 


Observação: a ID de restauração deve ser armazenada em seu back-end e você pode implementar a lógica para recuperá-la para restaurar as conversas.

O aplicativo armazena a combinação de id externo e ID de restauração no Freshchat SDK para continuar a conversa em sessões no mesmo dispositivo ou em diferentes dispositivos e plataformas. 



Observação: as notificações são suportadas em apenas um dispositivo móvel a qualquer momento. No momento, é o último dispositivo restaurado ou dispositivo com o último token push atualizado.



Objetivo C

//To set external id:
[[Freshchat sharedInstance] identifyUserWithExternalID:@"externalId" restoreID:nil];
//To lookup and restore user by external id and restore id:
[[Freshchat sharedInstance] identifyUserWithExternalID:@"externalId" restoreID: @"restoreId"];
//To retrieve the restore id:
[FreshchatUser sharedInstance].restoreID;
//To listen to restore id generated event:
// Register for local notification
[[NSNotificationCenter defaultCenter] addObserver:self                                             selector:@selector(userRestoreIdReceived:)                                                 name:FRESHCHAT_USER_RESTORE_ID_GENERATED                                               object :nil];
- (void) userRestoreIdReceived:(NSNotification *) notification{    NSLog(@"Your restore id is - %@",[FreshchatUser sharedInstance].restoreID);    NSLog(@"Your query external id is - %@",[FreshchatUser sharedInstance].externalID);
}
//Unregister
[[NSNotificationCenter defaultCenter] removeObserver:self
name:FRESHCHAT_USER_RESTORE_ID_GENERATED object:nil];
Objective-C


Rápido

Freshchat.sharedInstance().identifyUser(withExternalID: "externalId", restoreID: nil)
//To lookup and restore user by external id and restore id:
Freshchat.sharedInstance().identifyUser(withExternalID: "externalId", restoreID: "restoreId")
//To retrieve the restore id:
FreshchatUser.sharedInstance().restoreID
//To listen to restore id generated event:
// Register for local notification
NotificationCenter.default.addObserver(self,selector:
#selector(userRestoreIdReceived),name: NSNotification.Name(rawValue: FRESHCHAT_USER_RESTORE_ID_GENERATED),object: nil)
func userRestoreIdReceived()
{   print("Your restore id is - " FreshchatUser.sharedInstance().restoreID)   print("Your query external id is - " FreshchatUser.sharedInstance().externalID)
}
//Unregister local notification
NotificationCenter.default.removeObserver(FRESHCHAT_USER_RESTORE_ID_GENERATED)
Objective-C


4. Inicie a experiência de suporte

Use os snippets a seguir para iniciar as perguntas frequentes ou a experiência de suporte baseada em conversas a partir de uma frase de chamariz em seu aplicativo. Sua frase de chamariz ou ponto de entrada pode ser um botão na tela ou um item de menu.


4.1 Conversas

Para abrir a lista de conversas do Freshchat ou uma única sobreposição de conversa a qualquer momento, você precisa usar showConversations: API.


Por exemplo, para exibir a sobreposição de feedback ao pressionar um botão, o método de destino em uma classe ViewController pode ser semelhante a:


Objetivo C 

- (IBAction)showFeedbackOverlay:(id)sender
{    [[Freshchat sharedInstance] showConversations:self];
} 
Objective-C

Rápido

func presentConversation(sender: Any) {        Freshchat.sharedInstance().showConversations(self)
}
Objective-C


4.1.1 Filtrar Tópicos

Diferentes conjuntos de tópicos podem ser exibidos para diferentes tipos de usuários ou em diferentes telas usando tags para filtrar tópicos. Isso pode ser configurado e passado para o método ConversationsOptions().



Objetivo C

ConversationOptions *options = [ConversationOptions new];
[options filterByTags:@[ @"all", @"paiduser" ]
withTitle:@"Filter_View_Title"];
[[Freshchat sharedInstance] showConversations:self withOptions: options];
Objective-C

Rápido

let options = ConversationOptions.init()
let tags: [String] = ["all","paidUser"]  //Your filter tags
options.filter(byTags: tags, withTitle: "Filter_View_Title")
Freshchat.sharedInstance().showConversations(self, with: options)
Objective-C

As contactUsTags também podem ser usadas para mostrar um conjunto diferente de Tópicos quando o usuário vem da seção de autoajuda.


Nota: Para os Tópicos não correspondentes, o usuário será redirecionado para o Tópico padrão.


4.1.2 Contagem não lida

Se você deseja indicar aos usuários que eles têm mensagens não lidas em suas caixas de entrada, você pode recuperar a contagem não lida para exibição. Block retorna um int indicando o número de mensagens não lidas para o usuário.


Objetivo C

[[Freshchat sharedInstance]unreadCountWithCompletion:^(NSInteger count) {        NSLog(@"your unread count : %d", (int)count);
}];
Objective-C

Rápido

Freshchat.sharedInstance().unreadCount { (count:Int) -> Void in          print("Unread count (Async) :\(count)") }
Objective-C

O aplicativo também pode optar por ouvir as alterações na contagem não lida quando o aplicativo estiver aberto.


Objetivo C

[[NSNotificationCenter defaultCenter]addObserverForName:FRESHCHAT_UNREAD_MESSAGE_COUNT_CHANGED 
object:nil queue:nil usingBlock:^(NSNotification *note) {       [[Freshchat sharedInstance]unreadCountWithCompletion:^(NSInteger count) {            NSLog(@"your unread count : %d", (int)count);       }]; }];
Objective-C

Rápido

// Register for notification   NotificationCenter.default.addObserver(self, selector:
#selector(self.methodOfReceivedNotification(notification:)), name: 
Notification.Name(FRESHCHAT_UNREAD_MESSAGE_COUNT_CHANGED), object: nil)
//Handling method -    func methodOfReceivedNotification(notification: Notification)
{        Freshchat.sharedInstance().unreadCount { (count:Int) -> Void in          print("Unread count (Async) :\(count)")        }            }
Objective-C


Observação: no SDK v1.5.0, o nome do evento de contagem não lida foi alterado de FRESHCHAT_UNREAD_MESSAGE_COUNT para FRESHCHAT_UNREAD_MESSAGE_COUNT_CHANGED


4.2. perguntas frequentes

Para exibir a sobreposição de perguntas frequentes do Freshchat a qualquer momento, use a API showFAQs().

Por exemplo, se você deseja exibir a sobreposição de feedback ao pressionar um botão, o método de destino em uma classe ViewController pode ser semelhante a:


Objetivo C

- (IBAction)showFeedbackOverlay:(id)sender
{      [[Freshchat sharedInstance] showFAQs:self];
}
Objective-C

Rápido

func presentFAQ(sender: Any) {        Freshchat.sharedInstance().showFAQs(self)
}
Objective-C

4.2.1 Opções de perguntas frequentes

Personalizações para o fluxo de FAQ podem ser obtidas especificando as opções relevantes na instância FaqOptions passada para a API showFAQs().


Objetivo-C:

FAQOptions *options = [FAQOptions  novo ];

opções.showFaqCategoriesAsGrid =  SIM // Mostrar FAQ em grade formal, NÃO para exibição de lista

opções.showContactUsOnFaqScreens =  SIM  // Mostrar opção de chat na seção de perguntas frequentes

opções.showContactUsOnFaqNotHelpful =  SIM // Mostrar contato nos detalhes do artigo quando o usuário selecionar Não útil

opções.showContactUsOnAppBar =  SIM // Mostra a opção de bate-papo na barra de navegação na visualização da categoria de FAQ ou na visualização da lista de artigos

[[ Freshchat  sharedInstance]mostrarFAQs: self  withOptions:options];

Rápido :

deixe  opções = FAQOpções. inicializar ()

options.showFaqCategoriesAsGrid =  true  // Mostrar FAQ na grade formal, false para exibição de lista

options.showContactUsOnFaqScreens =  true  // Mostrar opção de chat da seção de perguntas frequentes

options.showContactUsOnFaqNotHelpful =  true // Mostrar contato nos detalhes do artigo quando o usuário selecionar Não útil 

options.showContactUsOnAppBar =  true  // Mostra a opção de bate-papo na barra de navegação na exibição da categoria de perguntas frequentes ou na exibição da lista de artigos

Freshchat.sharedInstance().showFAQs( self , com: opções)


4.2.2 Perguntas frequentes sobre filtragem

Você pode filtrar e exibir apenas as perguntas frequentes marcadas com um termo específico em determinadas telas ou apenas para alguns usuários, como clientes conectados versus visitantes. Essas tags podem ser configuradas no painel.  


Por exemplo, para exibir as perguntas frequentes relacionadas à falha de pagamento, apenas nessa página, as perguntas frequentes específicas podem ser marcadas com "pagamento" e "faturamento". Eles podem então ser filtrados e exibidos para os usuários.


Filtragem de perguntas frequentes com artigo


Objetivo C

FAQOptions *options = [FAQOptions new];
[options filterByTags:@[ @"payment", @"billing" ]
withTitle:@"Filtered_View_title" andType: ARTICLE];
[[Freshchat sharedInstance]showFAQs:self withOptions:options];
Objective-C

Rápido

let options = FAQOptions.init()
let tags: [String] = ["payment","billing"]
options.filter(byTags: tags, withTitle:"Filtered_View_title", andType :ARTICLE)
Freshchat.sharedInstance().showFAQs(self, with: options)
Objective-C

Filtragem de perguntas frequentes com categoria

Você também pode filtrar categorias por tags. Isso mostrará uma visualização filtrada das categorias (nas quais os artigos seriam listados). Isso é útil para mostrar diferentes conjuntos de categorias para diferentes clientes (por exemplo, Clientes Pagos Vs Clientes Gratuitos).


Objetivo C

FAQOptions *options = [FAQOptions new];
[options filterByTags:@[ @"payment", @"billing" ]
withTitle:@"Filtered_View_Title" andType: CATEGORY];
[[Freshchat sharedInstance]showFAQs:self withOptions:options];
Objective-C

Rápido

let options = FAQOptions.init()
let tags: [String] = ["payment", "billing"]
options.filter(byTags: tags, withTitle:"Filtered_View_Title", andType :CATEGORY)
Freshchat.sharedInstance().showFAQs(self, with: options)
Objective-C
Observação: quando você filtra um artigo por tags, as tags de categoria (à qual o artigo pertence) também são aplicáveis.


4.2.3 Filtrar Tópicos exibidos ao clicar em "Fale Conosco" nas FAQs por tags


Para filtrar e exibir apenas tópicos marcados com um termo específico quando o usuário clicar em "Fale conosco" nas telas de FAQ, use a API filterContactUsByTags na instância FAQOptions passada para a API showFAQs() conforme abaixo.


Observação: o comportamento padrão para "Fale conosco" no fluxo de perguntas frequentes é o mesmo que invocar showConversations(), ou seja, ele exibirá todos os principais marcados como "Visível para todos os usuários", exceto quando a filtragem de tópicos estiver habilitada passando tags para filterContactUsByTags API.



Objetivo C

FAQOptions *options = [FAQOptions new];
[options filterContactUsByTags:@[@"filter_tags"]
withTitle:"Filtered_Message_Us_View_title"];
[[Freshchat sharedInstance]showFAQs:self withOptions:options];
Objective-C


Rápido

let options = FAQOptions.init()
options.filterContactUs(byTags: ["filter_tags"], withTitle:
"Filtered_Message_Us_View_title")
Freshchat.sharedInstance().showFAQs(self, with: options)
Objective-C


5. API de envio de mensagem

O aplicativo pode enviar uma mensagem em nome do usuário usando o sendMessage: API. Ele enviará uma mensagem silenciosamente e não iniciará a interface do usuário do Freshchat SDK. Essa API pode ser útil para definir mais contexto para os clientes antes de iniciar uma conversa.


Objetivo C

NSString *message = @"Your message here";
FreshchatMessage *userMessage = [[FreshchatMessage alloc]
initWithMessage:message andTag:@"single_match_tag"];
[[Freshchat sharedInstance] sendMessage:userMessage];
Objective-C

Rápido

let message = "Your message here"
let freshchatMessage = FreshchatMessage.init(message: message, andTag: "single_match_tag")
Freshchat.sharedInstance().send(freshchatMessage)
Objective-C


Nota: Se não houver tópicos correspondentes, a mensagem será enviada para o tópico padrão. Se houver vários tópicos correspondentes, a mensagem será enviada para o tópico mais antigo.


6. Notificações push


O Freshchat suporta certificado(s) .p12 apenas para enviar notificações por push para mensagens ou campanhas do usuário. Você pode criar um certificado push do iOS em algumas etapas.


O Freshchat SDK é capaz de receber notificações push para todas as conversas do usuário. Para ativá-lo, adicione a API setPushRegistrationToke ao método didRegisterForRemoteNotificationsWithDeviceToken delegado do seu aplicativo da seguinte maneira.


Objetivo C

[[Freshchat sharedInstance] setPushRegistrationToken:devToken];
Objective-C

Rápido

Freshchat.sharedInstance().setPushRegistrationToken(deviceToken)
Objective-C



Para lidar com mensagens de notificação por push no estado ativo ou em segundo plano, adicione o seguinte método no método delegado didReceiveRemoteNotification ou didFinishLaunchingWithOptions, respectivamente.


Objetivo C

if ([[Freshchat sharedInstance]isFreshchatNotification:info]) {        [[Freshchat sharedInstance]handleRemoteNotification:info
andAppstate:app.applicationState];
}
Objective-C

Rápido

if Freshchat.sharedInstance().isFreshchatNotification(userInfo) {            Freshchat.sharedInstance().handleRemoteNotification(userInfo,
andAppstate: application.applicationState)
} 
Objective-C


Observação: isFreshchatNotification retorna um BOOL. Se a notificação remota não foi enviada pelo Freshchat, ela retorna NÃO e você pode inserir o código para lidar com outras notificações com base nessa verificação.


6.1 Estrutura UNUserNotification

Este é o novo método de configuração de notificações push do iOS 10.1. Abordagens mais antigas funcionarão, mas estão obsoletas.


Se você estiver usando UserNotifications.framework para lidar com notificações, verifique se está lidando com notificações do Freshchat nos métodos willPresent e didReceive , conforme mostrado abaixo.


Objetivo C

/* For devices running on ios 10 and above */
- (void)userNotificationCenter:(UNUserNotificationCenter *)center       willPresentNotification:(UNNotification *)notification         withCompletionHandler:(void (^)
UNNotificationPresentationOptions options))completionHandler {    if ([[Freshchat sharedInstance]isFreshchatNotification:notification.request.content.userInfo]) {        [[Freshchat sharedInstance]handleRemoteNotification:notification.request.content.userInfo andAppstate:[[UIApplication sharedApplication] applicationState]];       completionHandler( UNAuthorizationOptionSound );    } else {        completionHandler( UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge );    }
}

/* For devices running on ios 10 and above */
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
didReceiveNotificationResponse:(UNNotificationResponse *)response         withCompletionHandler:(void (^)(void))completionHandler {    if ([[Freshchat sharedInstance]isFreshchatNotification:response.notification.request.content.userInfo]) {        [[Freshchat sharedInstance]handleRemoteNotification:response.notification.request.content.userInfo andAppstate:[[UIApplication sharedApplication] applicationState]];        completionHandler();    } else {        completionHandler();    }
}
Objective-C

Rápido

//@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter,        willPresent: UNNotification,        withCompletionHandler: @escaping (UNNotificationPresentationOptions)->()) {
if Freshchat.sharedInstance().isFreshchatNotification(willPresent.request.content.userInfo) {   Freshchat.sharedInstance().handleRemoteNotification(willPresent.reque
st.content.userInfo, andAppstate: UIApplication.shared.applicationState)  //Handled for freshchat notifications    withCompletionHandler([.sound])
} else {    withCompletionHandler([.alert, .sound, .badge]) //For other notifications         }
}
//@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter,                          didReceive: UNNotificationResponse,                          withCompletionHandler: @escaping ()->()) {
if Freshchat.sharedInstance().isFreshchatNotification(didReceive.notification.request.content.userInfo) {  Freshchat.sharedInstance().handleRemoteNotification(didReceive.notific
ation.request.content.userInfo, andAppstate: UIApplication.shared.applicationState) //Handled for freshchat notifications       withCompletionHandler()
} else {       withCompletionHandler() //For other notifications    }
}
Objective-C


7. Localização de idioma 


7.1 Suporte a idiomas da direita para a esquerda

O Freshchat SDK suporta idiomas RTL (árabe). 

Defina o valor 'NSTextAlignmentNatural' para UserMessageTextStyle/TeamMemberMessageTextStyle textAlignment para oferecer suporte a mensagens de conversa para idiomas RTL.


7.2 Mudança de localidade em tempo de execução 

Se seu aplicativo oferecer suporte à alteração de localidade de tempo de execução, adicione o nome de notificação local FRESHCHAT_USER_LOCALE_CHANGED ao seu método de alteração de localidade.


Objetivo C

[[NSNotificationCenter defaultCenter]
postNotificationName:FRESHCHAT_USER_LOCALE_CHANGED 
object:self];
Objective-C

Rápido

NotificationCenter.default.post(name: NSNotification.Name(rawValue:
FRESHCHAT_USER_LOCALE_CHANGED), object: self, userInfo: nil)
Objective-C


7.3 Localização de strings

Todas as strings usadas na interface do usuário do Freshchat SDK podem ser personalizadas e localizadas em vários idiomas.

   

Você pode fazer o seguinte para personalizar seu SDK.

  

Criando um pacote  

Localize o FCLocalization.bundle no pod FreshchatSDK ou baixe o FCLocalization.bundle aqui . Você pode renomear o arquivo para um nome personalizado.     


A estrutura da pasta bundle seria a seguinte,

   

Exemplo de estrutura de pacote contendo strings para inglês, francês e alemão.

YouCustomBundle.bundle
-en.Iproj
- FCLocalizable.strings
-fr.Iproj
- FCLocalizable.strings
-de.Iproj
 - FCLocalizable.strings


Mudando as cordas  

  1. Para alterar uma string específica usada na IU do SDK, basta atualizar a chave apropriada em FCLocalizable.strings. Os nomes-chave no arquivo são categorizados por interface do usuário e as chaves usadas são autoexplicativas.

  2. Faça o mesmo para todos os idiomas que deseja oferecer suporte
  3. O SDK vem apenas em inglês no momento, mas você poderá usar traduções para qualquer idioma que desejar. 


Vinculando ao projeto

  1. Depois de alterar todas as strings necessárias nos idiomas que você oferece suporte, vincule-o em “Build Phases” > “Copy Bundle Resources”.

  2. Ao inicializar o SDK, especifique o nome do pacote como parte da configuração do Freshchat. 
  3. Defina seus recursos de pacote personalizados


Objetivo C

config.stringsBundle = @"MyCustomBundle";
Objective-C

Rápido

config.stringsBundle = "MyCustomBundle"
Objective-C


Observação: 
1. O nome do pacote diferencia maiúsculas de minúsculas
2. A extensão .bundle não é necessária

8. Personalização


8.1 Opções de personalização da interface do usuário

Modifique nosso arquivo de tema padrão FCTheme.plist para personalizar a interface ou você pode vincular seu próprio tema personalizado

arquivo para o SDK usando o trecho de código a seguir.


Objetivo C

[config setThemeName:@"<Theme_Name>"];
Objective-C

Rápido

config.themeName = "<Theme_Name>"
Objective-C

Para personalização em nível de componente individual, siga nosso guia de temas.


teste

Depois de fazer as alterações, execute o aplicativo para verificar as alterações na IU do SDK. 


8.2 Interceptar e manipular links não Freshchat no aplicativo


O Freshchat fornece uma maneira de lidar com todos os cliques de hiperlinks não Freshchat por aplicativos. 

Adicione o código abaixo em seu controlador de exibição onde você está iniciando o suporte do Freshchat ou na classe AppDelegate


Para Objetivo C:


[Freshchat sharedInstance].customLinkHandler = ^BOOL(NSURL * url)
{ //Your code for handling link within app, forwarding link to another
viewcontroller        return YES; //Return "NO" if you want to open the link in the default browser like
Safari.

};
Objective-C



Para Swift:


Freshchat.sharedInstance().customLinkHandler = ({ (url) in 
//Your code for handling link within app, forwarding link to another
viewcontroller
       return true

//Return "false" if you want to open the link in the default browser like
Safari.

})
Objective-C



 

9. Outras Notas


9.1 Lista de Verificação para Lançamento

  1. Certifique-se de ter o SDK mais recente.

  2. Certifique-se de inicializar o SDK ao iniciar o aplicativo: didFinishLaunchingWithOptions: function.

  3. Verifique se a notificação por push está funcionando corretamente quando o aplicativo está em primeiro plano, segundo plano e no estado eliminado com o certificado de produção.

  4. Veja nosso documento de temas e personalização aqui para garantir que você está combinando a experiência com o resto do seu aplicativo.

  5. Configure o nome do tópico padrão e a mensagem de boas-vindas, mesmo se você não estiver usando outros tópicos.

  6. Capture o identificador exclusivo do usuário, e-mail, número de telefone ou qualquer outro identificador exclusivo do cliente com o SDK para garantir o uso tranquilo das APIs, bem como para o melhor uso do nosso recurso "Smart Plugs" no painel.

  7. Certifique-se de que as notificações por push estejam funcionando para novas instalações, bem como atualizações de suas versões anteriores.  


9.2 Compatibilidade com iOS 10

A partir do iOS 10, a Apple exige que os desenvolvedores declarem o acesso a controles sensíveis à privacidade com antecedência. 


Para atender a esse novo requisito de privacidade, os desenvolvedores devem adicionar as chaves necessárias ao Info.plist, 

"NSPhotoLibraryUsageDescription" e "NSCameraUsageDescription" 


Além disso, também registraremos uma mensagem de aviso no console do XCode se você não tiver adicionado as chaves necessárias. 


Aviso!

Se isso falhar, o iOS 10 sairá do aplicativo travando quando um usuário tentar acessar os controles do microfone, câmera ou biblioteca de fotos. 

Para mais informações, clique aqui .  


9.3 Problema do simulador do iOS 10  

O SDK do Freshchat depende dos serviços de chaves. Os simuladores Xcode 8.0 (8A218a) / iOS 10 têm um problema com os serviços de chaves, que não permitem que o SDK recupere dados da loja quando não há "direitos" configurados. Para corrigir isso na página de recursos do projeto, ative o recurso de notificações por push (e selecione "corrigir problema" se algum problema aparecer). Esta é uma solução alternativa para garantir que haja um arquivo de autorização válido para o projeto (que o simulador requer para funcionar corretamente) e, uma vez que o teste seja concluído, você pode descartar essas alterações.


Hospedamos um projeto de amostra que você pode usar para experimentar nossas APIs de SDK. 

Ele pode ser acessado no seguinte link: https://github.com/freshdesk/freshchat-ios/tree/master/Sample



        

Recentemente, atualizamos nossa marca em nossas ofertas e alteramos os nomes de nossos planos de preços. Se você se inscreveu antes de 9 de agosto de 2021, clique em Planos anteriores para visualizar seus planos aplicáveis. 
Garantimos que essa alteração não afetará sua experiência com o produto e nenhuma ação é necessária de sua parte.

Este artigo foi útil?

Que bom!

Obrigado pelo seu feedback

Desculpe! Não conseguimos ajudar você

Obrigado pelo seu feedback

Deixe-nos saber como podemos melhorar este artigo!

Selecione pelo menos um dos motivos
A verificação do CAPTCHA é obrigatória.

Feedback enviado

Agradecemos seu esforço e tentaremos corrigir o artigo