CHAT21 es el núcleo de la plataforma de chat en vivo de código abierto TilleSk.com.
Con chat21 android sdk puedes:
| |
|
El código fuente de la aplicación de demostración está disponible aquí
Puedes construir tu propio chat después de nuestro tutorial oficial
Antes de comenzar, necesita algunas cosas para configurar en su entorno:
Primero, incluya el complemento Google-Services y el repositorio Maven de Google en su archivo Build.gradle a nivel raíz:
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.1.1'
}
}
allprojects {
// ...
repositories {
// ...
google()
}
}
Luego, en su archivo de Gradle de módulo (generalmente la aplicación/compilación.gradle), agregue la línea de complemento Aplicar en la parte inferior del archivo para habilitar el complemento de Gradle:
apply plugin: 'com.android.application'
// ...
dependencies {
// ...
implementation "com.google.android.gms:play-services:11.8.0"
}
// ...
apply plugin: 'com.google.gms.google-services'
Colocar:
Agregue lo siguiente a su archivo APP/Build.gradle:
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'
}
}
}
}
Finalmente, como se describe en la documentación, pegue esta declaración como la última línea del archivo:
apply plugin: 'com.google.gms.google-services'
Al final, descargará un archivo google-services.json . Para obtener más información, consulte la documentación relativa
Crear una clase de aplicación personalizada
public class AppContext extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this); // add this
}
}
y agrégalo al manifiesto.xml
<application
android:name=".AppContext"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
...
</application>
Reemplace el tema principal predeterminado en sus estilos.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
a
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
obtendrás algo como:
<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>
El chat21 sdk proporciona un objeto de configuración chat. Que permite establecer algunos comportamientos y configuraciones personalizados para su chat.
Para crear una nueva instancia de CHAT21 SDK, debe crear su propia configuración (usando el chat21 sdk chat.configuration.builder) y usarla como paramater para el método 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>);
Reemplazar:
<APP_ID> con su Appid;<FIREBASE_URL> con su URL de base de datos Firebae de su aplicación Firebase;<STORAGE_BUCKET> con su URL de cubo de almacenamiento Firebae de su aplicación Firebase;<CONTEXT> con su contexto;<LOGGED_USER> con su usuario registrado actual, suponiendo que sea una instancia de iChatuserChatui le permite conectar rápidamente los elementos de interfaz de usuario comunes a las API SDK CHAT21.
Chatui te permite comenzar tu charla con una actividad y un fragmento interno.
Inicializar el componente chatui con las siguientes instrucciones
ChatUI.getInstance().setContext(this);
Comienza una nueva actividad que contiene la lista de conversaciones.
ChatUI.getInstance().showConversationsListActivity();
Tienes que crear un fragmento con un contenedor en el interior.
El chat comenzará dentro de este contenedor donde se muestra la lista de conversaciones.
<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>
Ahora puede mostrar su chat con el siguiente método:
ChatUI.getInstance().openConversationsListFragment(getChildFragmentManager(), R.id.container);
Conflictos dentro de com.android.support
Error:
* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Failed to execute aapt
Solución: Copie este bloque en la parte inferior de su archivo /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'
}
}
}
}
Multidexo
Error:
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Solución: asegúrese de haber agregado multiDexEnabled true dentro de /project/app/build.gradle
Copie este bloque dentro de su clase de aplicación personalizada
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
Tema
Error:
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.
Solución: vea la sección de estilo
Excepciones de nombre de la aplicación:
Error:
/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
Solución: Agregue las tools:replace="android:label" para anular el nombre de la aplicación SDK CHAT21 y el icono predeterminado:
```
<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>
```
Siga esta guía para implementar su propia biblioteca a JCenter