Chat21 é o núcleo da plataforma de bate -papo ao vivo de código aberto tiledesk.com.
Com Chat21 Android SDK, você pode:
| |
|
O código -fonte do aplicativo de demonstração está disponível aqui
Você pode construir seu próprio bate -papo seguindo nosso tutorial oficial
Antes de começar, você precisa de algumas coisas para configurar em seu ambiente:
Primeiro, inclua o plug-in do Google Services e o repositório Maven do Google ao seu arquivo Build.gradle no nível da raiz:
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.1.1'
}
}
allprojects {
// ...
repositories {
// ...
google()
}
}
Em seguida, no seu arquivo gradle do módulo (geralmente o app/build.gradle), adicione a linha de plug -in Apply na parte inferior do arquivo para ativar o plug -in gradle:
apply plugin: 'com.android.application'
// ...
dependencies {
// ...
implementation "com.google.android.gms:play-services:11.8.0"
}
// ...
apply plugin: 'com.google.gms.google-services'
Definir:
Adicione o seguinte ao seu App/Build.gradle Arquivo:
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, conforme descrito na documentação, cole esta declaração como a última linha do arquivo:
apply plugin: 'com.google.gms.google-services'
No final, você baixará um arquivo google-services.json . Para mais informações, consulte a documentação relativa
Crie uma classe de aplicativo personalizada
public class AppContext extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this); // add this
}
}
e adicione -o ao manifesto.xml
<application
android:name=".AppContext"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
...
</application>
Substitua o tema pai padrão em seus styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
para
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
você vai obter 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>
O Chat21 SDK fornece um objeto Chat.Configuration que permite definir algum comportamento e configurações personalizados para o seu bate -papo.
Para criar uma nova instância do Chat21 SDK, você precisa criar sua própria configuração (usando o chat21 sdk chat.configuration.builder) e use -o como paramater para o 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>);
Substituir:
<APP_ID> com seu Appid;<FIREBASE_URL> com o seu URL do banco de dados Firebae do seu aplicativo Firebase;<STORAGE_BUCKET> Com o seu URL do balde de armazenamento FireBae do aplicativo Firebase;<CONTEXT> com seu contexto;<LOGGED_USER> Com o seu usuário registrado atual, assumindo que é uma instância de IchatuserO Chatui permite que você conecte rapidamente os elementos comuns da interface do usuário às APIs do Chat21 SDK.
O Chatui permite iniciar seu bate -papo com uma atividade e um fragmento dentro de um fragmento.
Inicialize o componente de chatui com a seguinte instrução
ChatUI.getInstance().setContext(this);
Ele inicia uma nova atividade que contém a lista de conversas.
ChatUI.getInstance().showConversationsListActivity();
Você precisa criar um fragmento com um recipiente dentro.
O bate -papo começará dentro deste contêiner, onde a lista de conversas é mostrada.
<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>
Agora você pode mostrar seu bate -papo com o seguinte método:
ChatUI.getInstance().openConversationsListFragment(getChildFragmentManager(), R.id.container);
Conflitos dentro de com.android.support
Erro:
* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Failed to execute aapt
Solução: Copie este bloco na parte inferior do seu arquivo /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
Erro:
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Solução: verifique se você adicionou multiDexEnabled true dentro de /project/app/build.gradle
Copie este bloco dentro da sua classe de aplicativo personalizada
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
Tema
Erro:
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.
Solução: veja a seção de estilo
Nome do aplicativo Exceções:
Erro:
/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
Solução: Adicione as tools:replace="android:label" para substituir o nome do aplicativo e o ícone padrão do aplicativo Chat21 SDK:
```
<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 este guia para implantar sua própria biblioteca no JCenter