Incrustar una ventana de chat móvil en una aplicación de Android para
Chat en vivo: https://developers.livechat.com/docs/getting-started/installing-livechat/android-widget/
Para incluir un proyecto en su compilación:
Paso 1. Agregue el repositorio JitPack a su archivo de compilación. Agréguelo en su build.gradle raíz al final de los repositorios:
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
Paso 2. Agrega la dependencia
dependencies {
implementation 'com.github.livechat:chat-window-android:v2.4.3'
}
Su aplicación necesitará un permiso para utilizar Internet. Agregue la siguiente línea a su AndroidManifest.xml :
< uses-permission android : name = " android.permission.INTERNET " />
Hay dos formas de utilizar esta biblioteca. Para poder utilizar todas las funciones, le recomendamos agregar una ventana de chat como vista, ya sea mediante un método estático que agrega una vista a su actividad o como una vista incrustada en su xml. Siempre que ChatWindowView esté inicializado, recibirá eventos cuando llegue un mensaje nuevo.
Primero, necesitas configurar tu ventana de chat.
Simplemente use el constructor ChatWindowConfiguration.java. Tenga en cuenta que el número de licencia es obligatorio.
configuration = new ChatWindowConfiguration (
"your_licence_number" ,
"group_id" , // optional
"Visitor name" , // optional
"[email protected]" , // optional
customParamsMap // optional
);
También puedes usar new ChatWindowConfiguration.Builder()
.
Hay dos formas recomendadas de utilizar ChatWindow.
Todo lo que necesitas hacer es crear, adjuntar e inicializar la ventana de chat. Algo en las líneas de:
public void startFullScreenChat () {
if ( fullScreenChatWindow == null ) {
fullScreenChatWindow = ChatWindowUtils . createAndAttachChatWindowInstance ( getActivity ());
fullScreenChatWindow . setEventsListener ( this );
fullScreenChatWindow . init ( configuration );
}
fullScreenChatWindow . showChatWindow ();
}
Si desea controlar el lugar y el tamaño de ChatWindowView, es posible que desee agregarlo a su aplicación, ya sea incluyendo una vista en XML.
< com .livechatinc.inappchat.ChatWindowViewImpl
android : id = " @+id/embedded_chat_window "
android : layout_width = " match_parent "
android : layout_height = " 400dp " />
o inflar la vista directamente
ChatWindowViewImpl chatWindowView = new ChatWindowViewImpl ( MainActivity . this );
y luego inicializando ChatWindow como con el enfoque de ventana de pantalla completa:
public void startEmmbeddedChat ( View view ) {
emmbeddedChatWindow . setEventsListener ( this );
emmbeddedChatWindow . init ( configuration );
// ...
emmbeddedChatWindow . showChatWindow ();
}
Dependiendo de su caso de uso, es posible que desee ocultar ChatWindow si el usuario presiona el botón Atrás. Puede utilizar nuestra función onBackPressed() que oculta la vista si es visible y devuelve verdadero. En su actividad/fragmento agregue lo siguiente:
@ Override
public boolean onBackPressed () {
return fullScreenChatWindow != null && fullScreenChatWindow . onBackPressed ();
}
Este oyente le brinda la oportunidad de:
Para brindar a sus usuarios la capacidad de enviar archivos, debe configurarlo a través de supportFileSharing
en su ChatWindowView
. En caso de que el sistema operativo no pueda manejar la intención de seleccionar archivos, puede manejarlo mediante la devolución de llamada onFilePickerActivityNotFound
en ChatWindowEventsListener
.
Puede desactivar el comportamiento predeterminado del widget de chat cuando el usuario selecciona un enlace implementando el método handleUri
de ChatWindowEventsListener.
@ Override
public boolean handleUri ( Uri uri ) {
// Handle uri here...
return true ; // Return true to disable default behavior.
}
Es posible que desee personalizar la experiencia del usuario cuando encuentre errores, como problemas con la conexión a Internet. Al devolver true
en el método de devolución de llamada onError
, asume la responsabilidad de manejar los errores que provienen de la ventana de chat.
Tenga en cuenta que la ventana de chat, una vez cargada, puede solucionar problemas de conexión al intentar volver a conectarse esporádicamente. Este caso se puede detectar implementando la siguiente condición en el método de devolución de llamada 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 ;
}
Después de que su usuario cierre sesión en la aplicación, es posible que desee borrar la sesión de chat. Puede hacerlo invocando el método estático en ChatWindowUtils.clearSession()
desde cualquier lugar de la aplicación. En caso de que su ChatWindowView
se adjunte durante el flujo de cierre de sesión, también deberá volver a cargarlo llamando chatWindow.reload()
después del código clearSession. Ver FullScreenWindowActivityExample.java
Si no necesita recibir una notificación cuando el usuario recibe un mensaje nuevo en una ChatWindow oculta, es posible que desee utilizar ChatWindowActivity
o ChatWindowFragment
Para abrir una ventana de chat en una nueva Actividad, debes declarar ChatWindowActivity
en tu manifiesto. Agregue la siguiente línea a AndroidManifest.xml
, entre las etiquetas <application></application>
:
< activity
android : name = " com.livechatinc.inappchat.ChatWindowActivity "
android : configChanges = " orientation|screenSize "
android : exported = " false "
/>
Finalmente, agregue el siguiente código a su aplicación, en un lugar donde desee abrir la ventana de chat (por ejemplo, botón de escucha). Debe proporcionar un Contexto (su objeto Actividad o Aplicación) y su número de licencia de 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 );
También es posible iniciar sesión automáticamente en la ventana de chat proporcionando el nombre y el correo electrónico del visitante y desactivando la encuesta previa al chat.
Para abrir la ventana de chat en un nuevo Fragmento, debe agregar el siguiente código a su aplicación, en un lugar donde desee abrir la ventana de chat (por ejemplo, botón de escucha). También debe proporcionar su número de licencia de 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 ();
También es posible iniciar sesión automáticamente en la ventana de chat proporcionando el nombre y el correo electrónico del visitante al Fragmento y desactivando la encuesta previa al chat.
Puede cambiar o localizar mensajes de error definiendo sus propios recursos de cadena con los siguientes ID
< 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 la versión 2.4.0, los detalles de la migración se enumeran en CHANGELOG.md.
setUpWindow(configuration);
se reemplaza por setConfiguration(configuration);
setUpListener(listener)
se reemplaza por setEventsListener(listener)
ChatWindowView.clearSession()
se mueve a ChatWindowUtils.clearSession(Context)
ChatWindowView.createAndAttachChatWindowInstance(Activity)
se mueve ChatWindowUtils.createAndAttachChatWindowInstance(getActivity())
android.permission.READ_EXTERNAL_STORAGE
en su AndroidManifest.xmlLa integración de SnapCall requiere permisos de AUDIO y VIDEO. Para permitir que sus usuarios utilicen la integración de SnapCall, debe:
AndroidManifest.xml
de su aplicación < 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 permisos al usuario, así: @ 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 pasar el resultado a ChatWindowView
if (! chatWindow . onRequestPermissionsResult ( requestCode , permissions , grantResults )) {
super . onRequestPermissionsResult ( requestCode , permissions , grantResults );
}
Como referencia, consulte FullScreenWindowActivityExample.java