CHAT21 ist der Kern der Open -Source -Live -Chat -Plattform Tiledesk.com.
Mit Chat21 Android SDK können Sie:
| |
|
Demo -App -Quellcode ist hier verfügbar
Yo kann nach unserem offiziellen Tutorial einen eigenen Chat erstellen
Bevor Sie beginnen, benötigen Sie ein paar Dinge, die Sie in Ihrer Umgebung einrichten müssen:
Fügen Sie zunächst das Google-Services-Plugin und das Maven-Repository von Google in Ihre Root-Level-Build-Datei hinzu:
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.1.1'
}
}
allprojects {
// ...
repositories {
// ...
google()
}
}
Fügen Sie dann in Ihrer Modul -Gradle -Datei (normalerweise die App/den Build.gradle) die Plugin -Leitung anwenden unten in der Datei hinzu, um das Gradle -Plugin zu aktivieren:
apply plugin: 'com.android.application'
// ...
dependencies {
// ...
implementation "com.google.android.gms:play-services:11.8.0"
}
// ...
apply plugin: 'com.google.gms.google-services'
Satz:
Fügen Sie Folgendes Ihrer App/Build.Dradle -Datei hinzu:
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'
}
}
}
}
Fügen Sie schließlich, wie in der Dokumentation beschrieben, diese Anweisung als letzte Zeile der Datei ein:
apply plugin: 'com.google.gms.google-services'
Am Ende laden Sie eine google-services.json -Datei herunter. Weitere Informationen finden Sie in der relativen Dokumentation
Erstellen Sie eine benutzerdefinierte Anwendungsklasse
public class AppContext extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this); // add this
}
}
und fügen Sie es zum Manifest.xml hinzu
<application
android:name=".AppContext"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
...
</application>
Ersetzen Sie das standardmäßige übergeordnete Thema in Ihren Stilen.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
Zu
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Sie erhalten so etwas wie:
<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>
Das Chat21 SDK bietet ein Chat.Configuration -Objekt, mit dem einige benutzerdefinierte Verhaltens- und Einstellungen für Ihren Chat festgelegt werden können.
Um eine neue Instanz von CHAT21 SDK zu erstellen, müssen Sie Ihre eigene Konfiguration erstellen (mit dem Chat21 SDK CHAT.Configuration.builder) und sie als Paramater für die Methode 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>);
Ersetzen:
<APP_ID> mit Ihrem Appid;<FIREBASE_URL> mit Ihrer Firebae -Datenbank -URL Ihrer Firebase -App;<STORAGE_BUCKET> mit Ihrer FireBae Storage Bucket URL Ihrer Firebase -App;<CONTEXT> mit Ihrem Kontext;<LOGGED_USER>Mit Chatui können Sie häufig gemeinsame UI -Elemente mit CHAT21 SDK -APIs verbinden.
Mit Chatui können Sie Ihren Chat sowohl mit einer Aktivität als auch mit einem Inneren eines Fragments beginnen.
Initialisieren Sie die Chatui -Komponente mit der folgenden Anweisung
ChatUI.getInstance().setContext(this);
Es startet eine neue Aktivität, die die Liste der Gespräche enthält.
ChatUI.getInstance().showConversationsListActivity();
Sie müssen ein Fragment mit einem Behälter im Inneren erstellen.
Der Chat beginnt in diesem Container, in dem die Liste der Konversationen angezeigt wird.
<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>
Jetzt können Sie Ihren Chat mit der folgenden Methode anzeigen:
ChatUI.getInstance().openConversationsListFragment(getChildFragmentManager(), R.id.container);
Konflikte innerhalb von com.android.support
Fehler:
* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Failed to execute aapt
Lösung: Kopieren Sie diesen Block unten in Ihrer Datei /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
Fehler:
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Lösung: Stellen Sie sicher, dass Sie multiDexEnabled true in /project/app/build.gradle hinzugefügt haben
Kopieren Sie diesen Block in Ihre benutzerdefinierte Anwendungsklasse
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
Thema
Fehler:
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.
Lösung: Siehe Style -Abschnitt
Anwendungsname Ausnahmen:
Fehler:
/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
Lösung: Fügen Sie die tools:replace="android:label" um den Namen Chat21 SDK -App -Namen und Standardsymbol zu überschreiben:
```
<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>
```
Folgen Sie dieser Anleitung, um eine eigene Bibliothek in JCenter bereitzustellen