Chat21 est au cœur de la plate-forme de chat en direct open source tiledesk.com.
Avec le SDK Android CHAT21, vous pouvez:
| |
|
Le code source de l'application de démonstration est disponible ici
Vous pouvez créer votre propre chat après notre tutoriel officiel
Avant de commencer, vous avez besoin de quelques choses à installer dans votre environnement:
Tout d'abord, incluez le plugin Google-Services et le référentiel Maven de Google dans votre fichier Buildle.
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.1.1'
}
}
allprojects {
// ...
repositories {
// ...
google()
}
}
Ensuite, dans votre module Fichier Gradle (généralement l'application / build.gradle), ajoutez la ligne du plugin Appliquer en bas du fichier pour activer le plugin gradle:
apply plugin: 'com.android.application'
// ...
dependencies {
// ...
implementation "com.google.android.gms:play-services:11.8.0"
}
// ...
apply plugin: 'com.google.gms.google-services'
Ensemble:
Ajoutez ce qui suit à votre application / build.gradle Fichier:
defaultConfig {
// ...
multiDexEnabled true
}
dependencies {
// ...
compile 'com.android.support:multidex:1.0.1'
compile "com.google.android.gms:play-services:11.8.0"
compile 'com.android.support:design:26.1.0'
compile 'org.chat21.android:chat21:1.0.10'
compile 'com.vanniktech:emoji-ios:0.5.1'
}
// ...
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '26.1.0'
}
}
}
}
Enfin, comme décrit dans la documentation, collez cette déclaration comme la dernière ligne du fichier:
apply plugin: 'com.google.gms.google-services'
À la fin, vous téléchargerez un fichier google-services.json . Pour plus d'informations, reportez-vous à la documentation relative
Créer une classe d'application personnalisée
public class AppContext extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this); // add this
}
}
et ajoutez-le au manifeste.xml
<application
android:name=".AppContext"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
...
</application>
Remplacez le thème parent par défaut dans vos styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
à
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Vous obtiendrez quelque chose comme:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Le SDK CHAT21 fournit un objet CHAT.Configuration qui permet de définir un comportement et des paramètres personnalisés pour votre chat.
Pour créer une nouvelle instance du SDK CHAT21, vous devez créer votre propre configuration (en utilisant le SDK Chat.configuration.builder) et l'utiliser comme paramater pour la méthode Chat.initialize(configuration);
// optional
//enable persistence must be made before any other usage of FirebaseDatabase instance.
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
// mandatory
// it creates the chat configurations
ChatManager.Configuration mChatConfiguration =
new ChatManager.Configuration.Builder(<APP_ID>)
.firebaseUrl(<FIREBASE_DATABASE_URL>)
.storageBucket(<STORAGE_BUCKET>)
.build();
ChatManager.start(<CONTEXT>, mChatConfiguration, <LOGGED_USER>);
Remplacer:
<APP_ID> avec votre appid;<FIREBASE_URL> avec votre URL de base de données Firebae de votre application Firebase;<STORAGE_BUCKET> avec votre URL de seau de stockage Firebae de votre application Firebase;<CONTEXT> avec votre contexte;<LOGGED_USER> avec votre utilisateur enregistré actuel, en supposant qu'il s'agit d'une instance d'IchatUserChuUi vous permet de connecter rapidement les éléments d'interface utilisateur courants aux API SDK CHAT21.
Chatui vous permet de commencer votre conversation avec une activité et un fragment à l'intérieur.
Initialisez le composant Chatui avec l'instruction suivante
ChatUI.getInstance().setContext(this);
Il commence une nouvelle activité qui contient la liste des conversations.
ChatUI.getInstance().showConversationsListActivity();
Vous devez créer un fragment avec un conteneur à l'intérieur.
Le chat commencera à l'intérieur de ce conteneur où la liste des conversations est affichée.
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.design.widget.CoordinatorLayout>
Vous pouvez maintenant afficher votre conversation avec la méthode suivante:
ChatUI.getInstance().openConversationsListFragment(getChildFragmentManager(), R.id.container);
Conflits dans com.android.support
Erreur:
* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Failed to execute aapt
Solution: Copiez ce bloc au bas de votre fichier /project/app/build.gradle
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '26.1.0'
}
}
}
}
Multidex
Erreur:
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Solution: Assurez-vous que vous avez ajouté multiDexEnabled true à l'intérieur de /project/app/build.gradle
Copiez ce bloc à l'intérieur de votre classe d'application personnalisée
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
Thème
Erreur:
RuntimeException: Unable to start activity ComponentInfo{my.sample.package.myapplication/chat21.android.ui.conversations.activities.ConversationListActivity}: java.lang.IllegalStateException:
This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_SUPPORT_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
Solution: voir la section Style
Nom de l'application Exceptions:
Erreur:
/android/MyApp/app/src/main/AndroidManifest.xml:30:9 Error:
Attribute application@label value=(@string/application_name) from AndroidManifest.xml:30:9
is also present at {Library Name} value=(@string/app_name)
Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:26:5 to override
Solution: Ajoutez les tools:replace="android:label" pour remplacer le nom de l'application SDK CHAT21 et l'icône par défaut:
```
<application
android:name=".AppContext"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:label, android:icon"> <!-- add this -->
. . .
</application>
```
Suivez ce guide pour déployer votre propre bibliothèque à JCenter