Intégration d'une fenêtre de discussion mobile dans une application Android pour
Chat en direct : https://developers.livechat.com/docs/getting-started/installing-livechat/android-widget/
Pour intégrer un projet dans votre build :
Étape 1. Ajoutez le référentiel JitPack à votre fichier de build Ajoutez-le à votre racine build.gradle à la fin des référentiels :
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
Étape 2. Ajoutez la dépendance
dependencies {
implementation 'com.github.livechat:chat-window-android:v2.4.3'
}
Votre application aura besoin d'une autorisation pour utiliser Internet. Ajoutez la ligne suivante à votre AndroidManifest.xml :
< uses-permission android : name = " android.permission.INTERNET " />
Il existe plusieurs façons d’utiliser cette bibliothèque. Pour pouvoir utiliser toutes les fonctionnalités, nous vous recommandons d'ajouter une fenêtre de discussion en tant que vue, soit en utilisant une méthode statique qui ajoute une vue à votre activité, soit en tant que vue intégrée dans votre XML. Tant que ChatWindowView est initialisé, vous recevrez des événements lorsqu'un nouveau message arrivera.
Tout d'abord, vous devez configurer votre fenêtre de discussion
Utilisez simplement le constructeur ChatWindowConfiguration.java. Notez que le numéro de licence est obligatoire.
configuration = new ChatWindowConfiguration (
"your_licence_number" ,
"group_id" , // optional
"Visitor name" , // optional
"[email protected]" , // optional
customParamsMap // optional
);
Vous pouvez également utiliser new ChatWindowConfiguration.Builder()
.
Il existe deux manières recommandées d’utiliser ChatWindow.
Tout ce que vous avez à faire est de créer, joindre et initialiser la fenêtre de discussion. Quelque chose dans le sens de :
public void startFullScreenChat () {
if ( fullScreenChatWindow == null ) {
fullScreenChatWindow = ChatWindowUtils . createAndAttachChatWindowInstance ( getActivity ());
fullScreenChatWindow . setEventsListener ( this );
fullScreenChatWindow . init ( configuration );
}
fullScreenChatWindow . showChatWindow ();
}
Si vous souhaitez contrôler l'emplacement et la taille de ChatWindowView, vous souhaiterez peut-être l'ajouter à votre application en incluant une vue au format XML.
< com .livechatinc.inappchat.ChatWindowViewImpl
android : id = " @+id/embedded_chat_window "
android : layout_width = " match_parent "
android : layout_height = " 400dp " />
ou gonfler la vue directement
ChatWindowViewImpl chatWindowView = new ChatWindowViewImpl ( MainActivity . this );
puis initialiser ChatWindow comme avec une approche de fenêtre plein écran :
public void startEmmbeddedChat ( View view ) {
emmbeddedChatWindow . setEventsListener ( this );
emmbeddedChatWindow . init ( configuration );
// ...
emmbeddedChatWindow . showChatWindow ();
}
En fonction de votre cas d'utilisation, vous souhaiterez peut-être masquer ChatWindow si l'utilisateur clique sur le bouton Retour. Vous pouvez utiliser notre fonction onBackPressed() qui masque la vue si elle est visible et renvoie vrai. Dans votre activité/fragment, ajoutez ce qui suit :
@ Override
public boolean onBackPressed () {
return fullScreenChatWindow != null && fullScreenChatWindow . onBackPressed ();
}
Cet auditeur vous donne la possibilité de :
Pour permettre à vos utilisateurs d'envoyer des fichiers, vous devez le configurer via supportFileSharing
sur votre ChatWindowView
. Si le système d'exploitation n'est pas en mesure de gérer l'intention de sélectionner des fichiers, vous pouvez le gérer via le rappel onFilePickerActivityNotFound
dans ChatWindowEventsListener
.
Vous pouvez désactiver le comportement par défaut du widget de discussion lorsque l'utilisateur sélectionne un lien en implémentant la méthode handleUri
de ChatWindowEventsListener.
@ Override
public boolean handleUri ( Uri uri ) {
// Handle uri here...
return true ; // Return true to disable default behavior.
}
Vous souhaiterez peut-être personnaliser l'expérience utilisateur lorsque vous rencontrez des erreurs, telles que des problèmes de connexion Internet. En renvoyant true
dans la méthode de rappel onError
, vous assumez la responsabilité de gérer les erreurs provenant de la fenêtre de discussion.
Veuillez garder à l'esprit que la fenêtre de discussion, une fois chargée, peut gérer les problèmes de connexion en essayant sporadiquement de se reconnecter. Ce cas peut être détecté en implémentant la condition suivante dans la méthode de rappel 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 ;
}
Une fois que votre utilisateur s'est déconnecté de l'application, vous souhaiterez peut-être effacer la session de discussion. Vous pouvez le faire en appelant une méthode statique sur ChatWindowUtils.clearSession()
depuis n'importe où dans l'application. Si votre ChatWindowView
est attaché au cours du flux de déconnexion, vous devrez également le recharger en appelant chatWindow.reload()
après le code clearSession. Voir FullScreenWindowActivityExample.java
Si vous n'avez pas besoin d'être averti lorsque l'utilisateur reçoit un nouveau message dans une ChatWindow masquée, vous souhaiterez peut-être utiliser ChatWindowActivity
ou ChatWindowFragment
Afin d'ouvrir une fenêtre de discussion dans une nouvelle activité, vous devez déclarer ChatWindowActivity
dans votre manifeste. Ajoutez la ligne suivante à AndroidManifest.xml
, entre les balises <application></application>
:
< activity
android : name = " com.livechatinc.inappchat.ChatWindowActivity "
android : configChanges = " orientation|screenSize "
android : exported = " false "
/>
Enfin, ajoutez le code suivant à votre application, à l'endroit où vous souhaitez ouvrir la fenêtre de discussion (par exemple le bouton d'écoute). Vous devez fournir un Contexte (votre objet Activité ou Application) et votre numéro de licence 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 );
Il est également possible de se connecter automatiquement à la fenêtre de discussion en fournissant le nom et l'adresse e-mail du visiteur et en désactivant l'enquête préalable au chat.
Afin d'ouvrir la fenêtre de discussion dans un nouveau Fragment, vous devez ajouter le code suivant à votre application, à l'endroit où vous souhaitez ouvrir la fenêtre de discussion (par exemple, un bouton d'écoute). Vous devez également fournir votre numéro de licence 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 ();
Il est également possible de se connecter automatiquement à la fenêtre de discussion en fournissant le nom et l'adresse e-mail du visiteur au Fragment et en désactivant l'enquête préalable au chat.
Vous pouvez modifier ou localiser les messages d'erreur en définissant vos propres ressources de chaîne avec les identifiants suivants
< 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 >
Depuis la version 2.4.0, les détails de la migration sont répertoriés dans CHANGELOG.md.
setUpWindow(configuration);
est remplacé par setConfiguration(configuration);
setUpListener(listener)
est remplacé par setEventsListener(listener)
ChatWindowView.clearSession()
est déplacé vers ChatWindowUtils.clearSession(Context)
ChatWindowView.createAndAttachChatWindowInstance(Activity)
est déplacé vers ChatWindowUtils.createAndAttachChatWindowInstance(getActivity())
android.permission.READ_EXTERNAL_STORAGE
dans votre AndroidManifest.xmlL'intégration SnapCall nécessite les autorisations AUDIO et VIDEO. Afin de permettre à vos utilisateurs d'utiliser l'intégration SnapCall, vous devez :
AndroidManifest.xml
de votre application < 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)
pour demander des autorisations à l'utilisateur, comme ceci : @ 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)
pour transmettre le résultat à ChatWindowView
if (! chatWindow . onRequestPermissionsResult ( requestCode , permissions , grantResults )) {
super . onRequestPermissionsResult ( requestCode , permissions , grantResults );
}
Pour référence, consultez FullScreenWindowActivityExample.java