Etapas de integração do SDK Android do Freshchat

Criada por Isabelle Fernandes, Modificado em Qua, 1 Mar, 2023 na (o) 9:37 AM por Isabelle Fernandes

ÍNDICE

1. Adicione o Freshchat SDK ao seu projeto

2. Inicialização do SDK

2.1 Opções de configuração de inicialização

3. Informações do usuário

3.1 Atualização das informações do usuário

3.2 Atualizando Propriedades do Usuário (Metadados)

3.3 Registrar eventos do usuário na linha do tempo (disponível a partir da versão 3.1.0)

3.4 Redefinir dados do usuário

3.5 Restaurar usuário

4. Iniciando a solução de suporte

4.1 Conversas

4.1.1 Filtrando tópicos de conversa

4.1.2 Contagem não lida

4.1.3 Contagem de mensagens não lidas em conversas filtradas por tags

4.2. Perguntas frequentes

4.2.1 Opções de perguntas frequentes

4.2.2 Filtrando categorias de FAQ por tags

4.2.3 Filtrando artigos de FAQ por tags

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

5. API de envio de mensagem

6. Notificações push

6.1 Conectando o Freshchat com o FCM 

6.1.1 Salvando a chave do servidor FCM no portal da web Freshchat

6.2 Personalizando Notificações

7. Localização de idioma

7.1 Alteração dos textos padrão do SDK

7.2 Localização

7.3 Suporte a idiomas da direita para a esquerda

7.4 Mudança de localidade do aplicativo em tempo de execução

8. Personalizações

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

8.2 Carregador de imagens personalizado

8.3 Interceptar e manipular links Non-Freshchat no aplicativo

9. Outras Notas

9.1 Lista de Verificação para Lançamento

9.2 Permissões

9.3 Configuração do Proguard (se o Proguard estiver ativado em seu aplicativo)

9.4 Aplicativos de amostra


Pré-requisitos

  • Os clientes SDK do Freshchat requerem dispositivos com Android 4.1 ou superior
  • O SDK do Freshchat oferece suporte a aplicativos destinados ao Android versão 7.0 com appcompat-v7 r24.2 ou posterior.


Obtenha seu ID do aplicativo, chave do aplicativo e domínio

Faça login na sua conta do Freshchat como proprietário/administrador da conta. Vá para Admin > Mobile SDK.



1. Adicione o Freshchat SDK ao seu projeto


i) Adicione a URL maven ao root build.gradle (project/build.gradle)

allprojects {    repositories {        jcenter()        maven { url "https://jitpack.io" }    }
}
HTML


ii) Adicione a seguinte dependência ao arquivo build.gradle do seu módulo de aplicativo (project/app/build.gradle):               

apply plugin: 'com.android.application'

android {
// ...
}

dependencies {
// ...    implementation 'com.github.freshworks:freshchat-android:{{latest-version}}'
}
HTML

Substitua {{latest-version}} pela versão mais recente do SDK  aqui . 

Por exemplo, implementação 'com.github.freshworks:freshchat-android:4.2.0' ' 

iii) Quando o aplicativo é destinado ao Android 7.0+ e o anexo de imagem está ativado, o FileProvider precisa ser configurado.

Inclua o provedor no AndroidManifest.xml conforme abaixo.

AndroidManifest.xml

<provider   android:name="androidx.core.content.FileProvider"    android:authorities="com.example.demoapp.provider"    android:exported="false"    android:grantUriPermissions="true">    <meta-data        android:name="android.support.FILE_PROVIDER_PATHS"        android:resource="@xml/freshchat_file_provider_paths" />
</provider>
XML

Strings.xml

<string name="freshchat_file_provider_authority">com.example.demoapp.provider</string>
Genérico


Consulte este vídeo para obter mais informações.


2. Inicialização do SDK

Invoque Freshchat.init() com seu ID de aplicativo, chave de aplicativo e domínio antes de invocar/tentar usar qualquer outro recurso do Freshchat SDK.  


É altamente recomendável invocar init() da função onCreate() da atividade de inicialização/suporte do seu aplicativo. O Freshchat SDK verifica a presença de seus componentes durante init() e avisará sobre componentes ausentes quando detectar que os componentes estão ausentes ou suas entradas de manifesto estão ausentes. 


Substitua YOUR-APP-ID, YOUR-APP-KEY e YOUR-DOMAIN no snippet de código a seguir pelo ID do aplicativo, chave do aplicativo e domínio reais.


FreshchatConfig config = new FreshchatConfig("YOUR-APP-ID","YOUR-APP-KEY");
freshchatConfig.setDomain("YOUR-DOMAIN");
Freshchat.getInstance(getApplicationContext()).init(config);
JavaScript


2.1 Opções de configuração de inicialização

Ative ou desative recursos como captura de câmera, especificando-o na configuração antes da inicialização. 

FreshchatConfig config = new FreshchatConfig("YOUR-APP-ID","YOUR-APP-KEY");
config.setDomain("YOUR-DOMAIN");
config.setCameraCaptureEnabled(true);
config.setGallerySelectionEnabled(true);
config.setResponseExpectationEnabled(true);
Freshchat.getInstance(getApplicationContext()).init(config);
JavaScript

3. Informações do usuário


3.1 Atualização das informações do usuário

Você pode enviar 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. 

// Get the user object for the current installation
FreshchatUser freshchatUser = Freshchat.getInstance(getApplicationContext()).getUser();
freshchatUser.setFirstName("John");
freshchatUser.setLastName("Doe");
freshchatUser.setEmail("john.doe.1982@mail.com");
freshchatUser.setPhone("+91", "9790987495");

// Call setUser so that the user information is synced with Freshchat's servers
Freshchat.getInstance(getApplicationContext()).setUser(freshchatUser);
Genérico

3.2 Atualizando 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.  

/* Set any custom metadata to give agents more context, and for segmentation for marketing or pro-active messaging */
Map<String, String> userMeta = new HashMap<String, String>();
userMeta.put("userLoginType", "Facebook");
userMeta.put("city", "SpringField");
userMeta.put("age", "22");
userMeta.put("userType", "premium");
userMeta.put("numTransactions", "5");
userMeta.put("usedWishlistFeature", "yes");                                
//Call setUserProperties to sync the user properties with Freshchat's servers
Freshchat.getInstance(getApplicationContext()).setUserProperties(userMeta);
JavaScript


3.3 Registrar eventos do usuário na linha do tempo (disponível a partir da versão 3.1.0)


O rastreamento de eventos do usuário fornece mais informações e contexto sobre o(s) usuário(s) em seu aplicativo. Eventos como ações do usuário, 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.


String eventName = "Visited Order Details page";

// Create a map and set required properties like below  
HashMap<String, Object> properties = new HashMap<>();
properties.put("Order Id", 3223232332);
properties.put("Order Date", "24 Jan 2020");
properties.put("Order Status ", "In-Transit");

// Call trackEvent by passing eventName and a map of properties
Freshchat.trackEvent(getContext(), eventName, properties);
JavaScript



Observação: 
1. O Freshchat permite apenas 121 eventos exclusivos 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 (max 256 chars)

4. 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. 

Freshchat.resetUser(getApplicationContext());
JavaScript


3.5 Restaurar usuário

Para reter as 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, e é definido usando a API Freshchat.identifyUser(). Isso não pode ser alterado depois de definido para o usuário.

  • Id de restauração - 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 Freshchat.getUser().getRestoreId(). O aplicativo é responsável por armazenar e posteriormente apresentar a combinação de id externo e id de restauração ao SDK do Freshchat para continuar as conversas de chat em sessões no mesmo dispositivo ou em dispositivos e plataformas.


Observação: 
a ID de restauração para um usuário geralmente é gerada apenas quando o usuário envia uma mensagem.
As notificações são suportadas em apenas um dispositivo móvel a qualquer momento e é atualmente o último dispositivo restaurado ou dispositivo com o último token push atualizado.



Para definir o ID externo

Freshchat.getInstance(getApplicationContext()).identifyUser(externalId, null);
JavaScript


Para recuperar o id de restauração

String restoreId = Freshchat.getInstance(getApplicationContext()).getUser().getRestoreId();
saveRestoreIdForUser(restoreId);
JavaScript


Para pesquisar e restaurar o usuário por id externo e restaurar o id

Freshchat.getInstance(getApplicationContext()).identifyUser(externalId, restoreId);
Genérico


Para ouvir o evento gerado pelo ID de restauração

A geração de ID de restauração é um processo assíncrono. Portanto, você precisa registrar um receptor de transmissão para ser notificado quando o ID de restauração for gerado. Este receptor pode ser registrado no onCreate e não registrado no onTerminate da sua classe de aplicação.


Registre-se para o receptor de transmissão

IntentFilter intentFilter = new IntentFilter(Freshchat.FRESHCHAT_USER_RESTORE_ID_GENERATED);
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(broadcastReceiver, intentFilter);
Java

Ouça o receptor de transmissão

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {  @Override  public void onReceive(Context context, Intent intent) {     String restoreId = Freshchat.getInstance(getApplicationContext()).getUser().getRestoreId();  }
};
Java

Cancelar registro do receptor de transmissão

LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(broadcastReceiver);
Genérico


4. Iniciando a solução de suporte

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


4.1 Conversas

Em resposta a eventos de interface do usuário específicos, como uma seleção de menu ou botão no evento de clique, invoque a API showConversations() para iniciar o fluxo de conversa. Se o aplicativo tiver vários tópicos configurados, o usuário verá a lista de tópicos . A lista de Tópicos é ordenada conforme especificado no Painel (link para a lista de Tópicos no painel) quando não há mensagens. Quando as mensagens estão presentes, a ordem é baseada nos Tópicos com interação mais recente . 

Observação: somente tópicos com visibilidade definida como "Visível para todos os usuários" serão exibidos ao usar a API showConversations()


Iniciando uma lista de conversas com o toque de um botão na tela do seu aplicativo

myConversationsButton.setOnClickListener(new OnClickListener() {    @Override    public void onClick(View view) {        Freshchat.showConversations(getApplicationContext());    }
}); 
JavaScript


4.1.1 Filtrando tópicos de conversa

Para filtrar e exibir apenas tópicos marcados com um termo específico, use a API filterByTags na instância ConversationOptions passada para a API showConversations() conforme abaixo.


Por exemplo: Para vincular e exibir apenas tópicos específicos da página de pedidos em seu aplicativo, esses tópicos específicos podem ser marcados com o termo "order_queries".

List<String> tags = new ArrayList<>();
tags.add("order_queries");
ConversationOptions options = new ConversationOptions()    .filterByTags(tags, "Order Queries");
Freshchat.showConversations(MainActivity.this, options);

JavaScript


Nota: 
Se nenhum Tópico correspondente for encontrado, o usuário será redirecionado para o Tópico padrão.

Os tópicos que normalmente não são visíveis ao usar a API showConversations() também serão exibidos quando marcados e a tag específica for passada para a API filterByTags da instância ConversationOptions passada para a API showConversations().



Por favor, consulte este vídeo para mais informações

4.1.2 Contagem não lida

Se você deseja obter o número de mensagens não lidas para o usuário na inicialização do aplicativo ou em qualquer outro evento específico, use a API getUnreadCountAsync e exiba a contagem.


Freshchat.getInstance(getApplicationContext()).getUnreadCountAsync(new UnreadCountCallback() {        @Override        public void onResult(FreshchatCallbackStatus freshchatCallbackStatus, int unreadCount) {            //Assuming "badgeTextView" is a text view to show the count on            badgeTextView.setText(Integer.toString(unreadCount));        }    });
JavaScript


O aplicativo também pode optar por ouvir as alterações na contagem não lida quando o aplicativo estiver aberto. A maneira de ouvir a transmissão é descrita abaixo.


Registre-se para o receptor de transmissão

IntentFilter intentFilter = new IntentFilter(Freshchat.FRESHCHAT_UNREAD_MESSAGE_COUNT_CHANGED);    getLocalBroadcastManager(getApplicationContext()).registerReceiver(unreadCountChangeReceiver, intentFilter);
JavaScript


Ouça a contagem não lida

BroadcastReceiver unreadCountChangeReceiver = new BroadcastReceiver() {    @Override    public void onReceive(Context context, Intent intent) {        Freshchat.getInstance(getApplicationContext()).getUnreadCountAsync(new UnreadCountCallback() {            @Override            public void onResult(FreshchatCallbackStatus freshchatCallbackStatus, int unreadCount) {                //Assuming "badgeTextView" is a text view to show the count on                badgeTextView.setText(Integer.toString(unreadCount));            }        });    }
}
JavaScript


Cancelar o registro do broadcast receiver

getLocalBroadcastManager(getApplicationContext()).unregisterReceiver(unreadCountChangeReceiver);
Genérico

4.1.3 Contagem de mensagens não lidas em conversas filtradas por tags

Se você deseja obter o número de mensagens não lidas para o usuário em conversas específicas filtradas por tags, use a API getUnreadCountAsync.


List<String> tags = new ArrayList<>();    tags.add("premium"); // Tags to filter conversations by    Freshchat.getInstance(getApplicationContext()).getUnreadCountAsync(new UnreadCountCallback() {        @Override        public void onResult(FreshchatCallbackStatus FreshchatCallbackStatus, int unreadCount) {            badgeTextView.setText(Integer.toString(unreadCount));        }    }, tags);
JavaScript


4.2. Perguntas frequentes

Em resposta a eventos específicos da interface do usuário, como uma seleção de menu ou evento de clique de botão, invoque a API showFAQs() para iniciar a tela de perguntas frequentes. Por padrão, as categorias de perguntas frequentes são exibidas como uma grade com um botão “Fale conosco” na parte inferior. Para personalizar isso, verifique as opções de perguntas frequentes.

myFAQButton.setOnClickListener(new OnClickListener() {    @Override    public void onClick(View view) {        Freshchat.showFAQs(getApplicationContext());    }
});
JavaScript

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().

// Launching FAQ from click of a button in your app's screen
myFAQButton.setOnClickListener(new OnClickListener() {    @Override    public void onClick(View view) {
        FaqOptions faqOptions = new FaqOptions()            .showFaqCategoriesAsGrid(true)            .showContactUsOnAppBar(true)            .showContactUsOnFaqScreens(false)            .showContactUsOnFaqNotHelpful(false);
        Freshchat.showFAQs(MainActivity.this, faqOptions);    }
});
JavaScript


4.2.2 Filtrando categorias de FAQ por tags

Para filtrar e exibir apenas categorias de perguntas frequentes marcadas com um termo específico, use a API filterByTags com tipo de filtro como categoria na instância FAQOptions passada para a API showFAQs().


Por exemplo: Para exibir categorias de FAQ relacionadas a um tipo de usuário específico, essas categorias de FAQ específicas podem ser marcadas com o termo "premium".

List<String> tags = new ArrayList<>();
tags.add("premium");

FaqOptions faqOptions = new FaqOptions()    .filterByTags(tags, "FAQs", FaqOptions.FilterType.CATEGORY);//tags, filtered screen title, type

Freshchat.showFAQs(MainActivity.this, faqOptions);

JavaScript

4.2.3 Filtrando artigos de FAQ por tags

Para filtrar e exibir apenas as perguntas frequentes marcadas com um termo específico, use a API filterByTags com o tipo de filtro como artigo na instância FAQOptions passada para a API showFAQs() conforme abaixo. 


Observação: as perguntas frequentes também herdam as tags da categoria principal de perguntas frequentes

Por exemplo: Para vincular as perguntas frequentes relacionadas à falha de pagamento, essas perguntas específicas podem ser marcadas com o termo "payment_failure" e podem ser vinculadas a partir da página de pagamentos no aplicativo.

List<String> tags = new ArrayList<>();
tags.add("payment_failure");

FaqOptions faqOptions = new FaqOptions()    .filterByTags(tags, "payment_failure", FaqOptions.FilterType.ARTICLE);//tags, filtered screen title, type

Freshchat.showFAQs(MainActivity.this, faqOptions);
JavaScript


4.2.4 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, exibirá todos os tópicos marcados como "Visíveis para todos os usuários", exceto quando a filtragem de tópicos estiver habilitada passando tags para filterContactUsByTags API.


Por exemplo: para exibir tópicos relacionados a uma seção específica do programa de perguntas frequentes, esses tópicos de mensagem específicos podem ser marcados com o termo "payment_failure" 

List<String> tags = new ArrayList<>();
tags.add("payment_failure");

FaqOptions faqOptions = new FaqOptions()    .filterContactUsByTags(tags, "Payments"); //tags, filtered screen title

Freshchat.showFAQs(MainActivity.this, faqOptions);
JavaScript


5. API de envio de mensagem

O aplicativo pode enviar uma mensagem em nome do usuário usando a API sendMessage(). 


Observação: esta API enviaria silenciosamente uma mensagem e não iniciaria a interface do usuário do Freshchat SDK


Por exemplo: Para enviar uma mensagem em um tópico marcado como "premium", a API pode ser invocada conforme abaixo.

String tag = "premium";
String msgText = "User has trouble with order #1234";
FreshchatMessage FreshchatMessage = new FreshchatMessage().setTag(tag).setMessage(msgText);
Freshchat.sendMessage(getContext(), FreshchatMessage);
JavaScript


6. Notificações push

A integração da notificação por push do Freshchat em seu aplicativo ajudará os usuários a receber suas mensagens de suporte mais rapidamente.

6.1 Conectando o Freshchat com o FCM 

Pré-requisitos

  1. FCM implementado em seu aplicativo
  2. Dispositivo executando o Play Services
  3. Chave do servidor FCM salva no portal da web do Freshchat

Passos

  1. Salvando a chave do servidor FCM no portal da web Freshchat
  2. Enviando o token de registro do dispositivo para o Freshchat

  3. Manipulando mensagens

Consulte este vídeo para obter mais informações.

6.1.1  Salvando a chave do servidor FCM no portal da web Freshchat

Obtenha a chave do servidor Firebase FCM do seu aplicativo e salve-a no aplicativo web Freshchat na seção Admin > Mobile SDK > Chave do servidor FCM .


6.1.2  Enviando o token de registro do dispositivo para o Freshchat

Envie o token de registro push do usuário para o Freshchat SDK. 

String token = FirebaseInstanceId.getInstance().getToken();
Freshchat.getInstance(this).setPushRegistrationToken(token);
JavaScript


6.1.3  Manipulando mensagens

Na implementação do FirebaseMessagingService do aplicativo, passe o objeto RemoteMessage para o Freshchat se for uma notificação do Freshchat.

public void onMessageReceived(RemoteMessage remoteMessage) {    if (Freshchat.isFreshchatNotification(remoteMessage)) {        Freshchat.handleFcmMessage(context, remoteMessage);    } else {        // Handle notifications with data payload for your app    }
}
JavaScript


6.2 Personalizando Notificações

O SDK do Freshchat oferece suporte à personalização do seguinte para notificações.


1. Ícone de notificação (ícone pequeno e ícone grande) - O ícone do aplicativo é usado como padrão para o ícone pequeno, se não for definido explicitamente.

2. Som de notificação - Ative ou desative o tom de notificação. Por padrão, ele está desativado.

3. Prioridade de notificação - Prioridade para notificações em dispositivos Android 8.0 abaixo. O padrão é NotificationCompat.PRIORITY_DEFAULT.

4. Importância da notificação - Importância das notificações em dispositivos Android 8.0+. O padrão é NotificationManagerCompat.IMPORTANCE_DEFAULT. Isso pode ser modificado para mostrar notificações de alerta.

5. Atividade a ser iniciada na navegação ascendente na tela de mensagens iniciada a partir da notificação. A tela de mensagens não terá nenhuma atividade para navegar no backstack quando for iniciada a partir da notificação. Especifique o nome da classe de atividade a ser ativada.   

6. Para especificar a cor de destaque do círculo atrás do ícone pequeno em uma notificação,

<color name="freshchat_notification_accent_color">@color/red</color>
JavaScript


7. No Oreo e versões posteriores do Android, o nome do canal de notificação usado para enviar notificações pode ser personalizado substituindo a string conforme abaixo.

<string name="freshchat_campaign_notification_channel_name">Campaign messages</string>
Genérico

    8. Especificando a configuração de notificação,

FreshchatNotificationConfig notificationConfig = new FreshchatNotificationConfig()    .setNotificationSoundEnabled(true)    .setSmallIcon(R.drawable.ic_notif_small_icon)    .setLargeIcon(R.drawable.ic_notif_large_icon)    .launchActivityOnFinish(MainActivity.class.getName())    .setPriority(NotificationCompat.PRIORITY_HIGH);Freshchat.getInstance(getApplicationContext()).setNotificationConfig(notificationConfig);
HTML


Suporte Android Oreo

O Freshchat oferece suporte a canais de notificação prontos para uso no Oreo ou posterior. Ele cria automaticamente um canal de notificação para mensagens de conversa.

Observação:

Se você ainda não integrou o FCM, faça-o seguindo as instruções  aqui  e siga as 3 etapas acima.


7. Localização de idioma


7.1 Alteração dos textos padrão do SDK

Todas as strings no SDK podem ser modificadas substituindo-as em strings.xml.

Todos os textos do Freshchat podem ser encontrados  aqui .


7.2 Localização

7.2.1  Localização de idioma dos textos padrão do Freshchat

Todas as strings no SDK podem ser modificadas substituindo-as no respectivo arquivo strings.xml de localidade.

Todos os textos do Freshchat podem ser encontrados  aqui .

Para obter mais detalhes, consulte a documentação do desenvolvedor do Android  aqui .

Consulte este vídeo para obter mais informações.

7.2.2  Localização do idioma de perguntas frequentes e tópicos

Depois que as perguntas frequentes e os tópicos forem localizados no aplicativo da web Freshchat, o SDK atualizará automaticamente o conteúdo com base na localidade do aplicativo/dispositivo do usuário.


7.3 Suporte a idiomas da direita para a esquerda

O Freshchat SDK oferece suporte a idiomas RTL. 


7.4 Mudança de localidade do aplicativo em tempo de execução


Se seu aplicativo puder oferecer suporte a diferentes localidades (idiomas) além da localidade padrão do dispositivo, siga as etapas abaixo para atualizar a localidade em seu SDK do Freshchat.


1. Depois que o aplicativo mudar de localidade, notifique o sdk sobre a mudança de localidade do aplicativo usando o método abaixo,


Freshchat.notifyAppLocaleChange(activityContext);
JavaScript


2. O Freshchat usa internamente o webview como parte do SDK, do sistema operacional Android versão 7.0, o webview muda de localidade durante o carregamento do webview.


Para corrigir isso, fornecemos um método de retorno de chamada onLocaleChangedByWebView(), onde você precisa redefinir a localidade novamente dentro dessa função.


Implementar FreshchatWebViewListener


private FreshchatWebViewListener webviewListener = new FreshchatWebViewListener() {    @Override    public void onLocaleChangedByWebView(@NonNull WeakReference<Context> activityContext) {      if (activityContext.get() == null) {        return;      }            // Reset the run time locale here      changeLocale(activityContext, appLocale);    }  };
JavaScript

Defina o webview listener como Freshchat Instance . Recomendamos que você faça isso em onCreate() da classe Application.


Freshchat.getInstance(this).setWebviewListener(webviewListener);
JavaScript



8. Personalizações


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

Consulte a documentação do tema  aqui .


8.2 Carregador de imagens personalizado

O padrão do SDK é incluir a biblioteca Picasso 2.5.2 para baixar imagens. Se quiser usar qualquer outra versão do Picasso ou qualquer outra biblioteca de download de imagens, você pode definir seu downloader de imagem personalizado com o Freshchat SDK usando a API setImageLoader().


Exemplos

Implemente seu carregador de imagem personalizado

public class CustomImageLoader implements FreshchatImageLoader {    @Override public void load(@NonNull FreshchatImageLoaderRequest request, @NonNull ImageView imageView) {    // your code to download image and set to imageView  }
  @Nullable  @Override  public Bitmap get(@NonNull FreshchatImageLoaderRequest request) {    // code to download and return bitmap image  }
  @Override  public void fetch(@NonNull FreshchatImageLoaderRequest request) {    // code to download image  }
}

JavaScript


Chame Freshchat.setImageLoader() em onCreate() da sua classe Application

public class MyApp extends Application {
  @Override  public void onCreate() {    super.onCreate();    Freshchat.setImageLoader(new CustomImageLoader());  }
}
JavaScript


8.3 Interceptar e manipular links Non-Freshchat no aplicativo


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

Registre um LinkHandler com o Freshchat, que fornecerá um retorno de chamada quando um usuário clicar em um link.


Recomendamos definir o manipulador de link na classe Application.


private LinkHandler linkHandler = new LinkHandler() {
    @Override
    public boolean handleLink(@NonNull String url, @Nullable Bundle bundle) {
        if (urlHandledByApp) {
            return true; // true, if handled by app
        } else {
            return false; // false, to let Freshchat SDK handle the link
        }
    }

};


// Set link handler to override links

Freshchat.getInstance(context).setCustomLinkHandler(linkHandler);
JavaScript




9. Outras Notas


9.1 Lista de Verificação para Lançamento

  1. Certifique-se de inicializar o SDK no onCreate do aplicativo ou atividade de suporte.
  2. Verifique se você está usando a versão mais recente do SDK.
  3. Verifique se as notificações por push estão funcionando desde o primeiro lançamento e se os ícones de notificação corretos estão configurados.
  4. Certifique-se de que o nome do aplicativo esteja definido corretamente para suas notificações.
  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 Permissões

O SDK do Freshchat é criado com suporte para o modelo de tempo de execução/permissões dinâmicas introduzido no Marshmallow, desde que o aplicativo seja criado com targetSdk como Marshmallow ou posterior.


9.3 Configuração do Proguard (se o Proguard estiver ativado em seu aplicativo)

O Freshchat Android SDK é configurado imediatamente para oferecer suporte ao proguard. O Proguard selecionará automaticamente a configuração para o SDK, nenhuma configuração manual é necessária.


9.4 Aplicativos de amostra


Aqui está uma lista de aplicativos de exemplo que você pode consultar ao descobrir como integrar o Freshchat SDK em seu aplicativo. Você pode usar a seguinte chave do servidor FCM para testar notificações push:


AAAAWQmY32o:APA91bGLTV57JJH-1vJcjNJzhz5Z72BL4Ll5SHjtSmmQKp_3SqcGUFZ9Qhm0XivQLpukN7r6CHY1oRYzsVALt9-O_uhC8YU-m1b1GmwMDfp377ckjFg81_C68b807BEPw1axYCSu32lQ
HTML




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