Incorporando janela de bate-papo móvel em aplicativo Android para
Chat ao vivo: https://developers.livechat.com/docs/getting-started/installing-livechat/android-widget/
Para incluir um projeto em sua compilação:
Etapa 1. Adicione o repositório JitPack ao seu arquivo de construção Adicione-o em sua raiz build.gradle no final dos repositórios:
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
Passo 2. Adicione a dependência
dependencies {
implementation 'com.github.livechat:chat-window-android:v2.4.3'
}
Seu aplicativo precisará de permissão para usar a Internet. Adicione a seguinte linha ao seu AndroidManifest.xml :
< uses-permission android : name = " android.permission.INTERNET " />
Existem algumas maneiras de usar esta biblioteca. Para poder usar todos os recursos, recomendamos que você adicione a janela de chat como uma visualização, seja usando um método estático que adiciona visualização à sua atividade, ou como uma visualização incorporada em seu xml. Enquanto o ChatWindowView estiver inicializado, você receberá eventos quando uma nova mensagem chegar.
Primeiro, você precisa configurar sua janela de chat
Basta usar o construtor ChatWindowConfiguration.java. Observe que o número da licença é obrigatório.
configuration = new ChatWindowConfiguration (
"your_licence_number" ,
"group_id" , // optional
"Visitor name" , // optional
"[email protected]" , // optional
customParamsMap // optional
);
Você também pode usar new ChatWindowConfiguration.Builder()
.
Existem duas maneiras recomendadas de usar o ChatWindow.
Tudo que você precisa fazer é criar, anexar e inicializar a janela de bate-papo. Algo na linha de:
public void startFullScreenChat () {
if ( fullScreenChatWindow == null ) {
fullScreenChatWindow = ChatWindowUtils . createAndAttachChatWindowInstance ( getActivity ());
fullScreenChatWindow . setEventsListener ( this );
fullScreenChatWindow . init ( configuration );
}
fullScreenChatWindow . showChatWindow ();
}
Se você gosta de controlar o local e o tamanho do ChatWindowView, você pode querer adicioná-lo ao seu aplicativo incluindo uma visualização em XML
< com .livechatinc.inappchat.ChatWindowViewImpl
android : id = " @+id/embedded_chat_window "
android : layout_width = " match_parent "
android : layout_height = " 400dp " />
ou inflando a visualização diretamente
ChatWindowViewImpl chatWindowView = new ChatWindowViewImpl ( MainActivity . this );
e então inicializando o ChatWindow como na abordagem de janela em tela cheia:
public void startEmmbeddedChat ( View view ) {
emmbeddedChatWindow . setEventsListener ( this );
emmbeddedChatWindow . init ( configuration );
// ...
emmbeddedChatWindow . showChatWindow ();
}
Dependendo do seu caso de uso, você pode ocultar o ChatWindow se o usuário clicar no botão Voltar. Você pode usar nossa função onBackPressed() que oculta a visualização se estiver visível e retorna verdadeiro. Em sua atividade/fragmento adicione o seguinte:
@ Override
public boolean onBackPressed () {
return fullScreenChatWindow != null && fullScreenChatWindow . onBackPressed ();
}
Este ouvinte dá a você a oportunidade de:
Para fornecer aos seus usuários a capacidade de enviar arquivos, você precisa configurá-lo por meio de supportFileSharing
em seu ChatWindowView
. No caso do sistema operacional não ser capaz de lidar com a intenção de selecionar arquivos, você pode lidar com isso por meio do retorno de chamada onFilePickerActivityNotFound
em ChatWindowEventsListener
.
Você pode desativar o comportamento padrão do widget de bate-papo quando o usuário seleciona o link implementando o método handleUri
de ChatWindowEventsListener.
@ Override
public boolean handleUri ( Uri uri ) {
// Handle uri here...
return true ; // Return true to disable default behavior.
}
Talvez você queira personalizar a experiência do usuário ao encontrar erros, como problemas de conexão com a Internet. Ao retornar true
no método de retorno de chamada onError
você assume a responsabilidade de lidar com erros provenientes da janela de bate-papo.
Lembre-se de que a janela de bate-papo, depois de carregada, pode resolver problemas de conexão ao tentar reconectar esporadicamente. Este caso pode ser detectado implementando a seguinte condição no método de retorno de chamada onError.
@ Override
public boolean onError ( ChatWindowErrorType errorType , int errorCode , String errorDescription ) {
if ( errorType == ChatWindowErrorType . WebViewClient && errorCode == - 2 && chatWindow . isChatLoaded ()) {
//Chat window can handle reconnection. You might want to delegate this to chat window
return false ;
} else {
reloadChatBtn . setVisibility ( View . VISIBLE );
}
Toast . makeText ( getActivity (), errorDescription , Toast . LENGTH_SHORT ). show ();
return true ;
}
Depois que o usuário sair do aplicativo, talvez você queira limpar a sessão de bate-papo. Você pode fazer isso invocando o método estático em ChatWindowUtils.clearSession()
de qualquer lugar do aplicativo. Caso seu ChatWindowView
seja anexado durante o fluxo de logout, você também precisará recarregá-lo chamando chatWindow.reload()
após o código clearSession. Consulte FullScreenWindowActivityExample.java
Se você não precisa ser notificado quando o usuário receber uma nova mensagem em um ChatWindow oculto, você pode usar ChatWindowActivity
ou ChatWindowFragment
Para abrir uma janela de chat em uma nova Activity, você precisa declarar ChatWindowActivity
em seu manifesto. Adicione a seguinte linha ao AndroidManifest.xml
, entre as tags <application></application>
:
< activity
android : name = " com.livechatinc.inappchat.ChatWindowActivity "
android : configChanges = " orientation|screenSize "
android : exported = " false "
/>
Por fim, adicione o seguinte código à sua aplicação, no local onde deseja abrir a janela de chat (por exemplo, botão listener). Você precisa fornecer um Contexto (seu objeto Atividade ou Aplicativo) e seu número de licença do LiveChat:
Intent intent = new Intent ( context , com . livechatinc . inappchat . ChatWindowActivity . class );
Bundle config = new ChatWindowConfiguration . Builder ()
. setLicenceNumber ( "<your_license_number>" )
. build ();
intent . putExtra ( ChatWindowConfiguration . KEY_CHAT_WINDOW_CONFIG , windowConfig );
startActivity ( intent );
Também é possível fazer login automaticamente na janela de chat, fornecendo o nome e email do visitante e desativando a pesquisa pré-chat.
Para abrir a janela de chat no novo Fragment, você precisa adicionar o seguinte código à sua aplicação, no local onde deseja abrir a janela de chat (por exemplo, botão listener). Você também precisa fornecer seu número de licença do LiveChat:
getSupportFragmentManager ()
. beginTransaction ()
. replace (
R . id . frame_layout ,
ChatWindowFragment . newInstance (
"your_license_number" ,
"your_group_id" , // optional
"visitor_name" , // optional
"visitor_email" , // optional
),
"chat_fragment"
)
. addToBackStack ( "chat_fragment" )
. commit ();
Também é possível fazer login automaticamente na janela de chat, fornecendo o nome e e-mail do visitante ao Fragmento e desativando a pesquisa pré-chat.
Você pode alterar ou localizar mensagens de erro, definindo seus próprios recursos de string com os seguintes IDs
< string name = " failed_to_load_chat " >Couldn't load chat.</ string >
< string name = " cant_share_files " >File sharing is not configured for this app</ string >
< string name = " reload_chat " >Reload</ string >
Desde a versão 2.4.0, os detalhes da migração estão listados em CHANGELOG.md.
setUpWindow(configuration);
é substituído por setConfiguration(configuration);
setUpListener(listener)
é substituído por setEventsListener(listener)
ChatWindowView.clearSession()
foi movido para ChatWindowUtils.clearSession(Context)
ChatWindowView.createAndAttachChatWindowInstance(Activity)
foi movido para ChatWindowUtils.createAndAttachChatWindowInstance(getActivity())
android.permission.READ_EXTERNAL_STORAGE
em seu AndroidManifest.xmlA integração do SnapCall requer permissões de ÁUDIO e VÍDEO. Para permitir que seus usuários usem a integração SnapCall, você precisa:
AndroidManifest.xml
do seu aplicativo < uses-permission android : name = " android.permission.RECORD_AUDIO " />
< uses-permission android : name = " android.permission.MODIFY_AUDIO_SETTINGS " />
< uses-permission android : name = " android.permission.CAMERA " />
void onRequestAudioPermissions(String[] permissions, int requestCode)
para solicitar permissões ao usuário, assim: @ Override
public void onRequestAudioPermissions ( String [] permissions , int requestCode ) {
if ( Build . VERSION . SDK_INT >= Build . VERSION_CODES . M ) {
this . requestPermissions ( permissions , requestCode );
}
}
void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
para passar o resultado para ChatWindowView
if (! chatWindow . onRequestPermissionsResult ( requestCode , permissions , grantResults )) {
super . onRequestPermissionsResult ( requestCode , permissions , grantResults );
}
Para referência, verifique FullScreenWindowActivityExample.java