CHAT21は、オープンソースのライブチャットプラットフォームTileDesk.comの中核です。
chat21 android sdkを使用すると、次のことができます。
| |
|
デモアプリソースコードはこちらから入手できます
私たちの公式のチュートリアルに続いて、あなたはあなた自身のチャットを構築できます
開始する前に、環境でセットアップするにはいくつかのことが必要です。
まず、Google-ServicesプラグインとGoogleのMavenリポジトリをルートレベルのbuild.gradleファイルに含めます。
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.1.1'
}
}
allprojects {
// ...
repositories {
// ...
google()
}
}
次に、モジュールGradleファイル(通常はapp/build.gradle)で、ファイルの下部に適用プラグイン行を追加して、Gradleプラグインを有効にします。
apply plugin: 'com.android.application'
// ...
dependencies {
// ...
implementation "com.google.android.gms:play-services:11.8.0"
}
// ...
apply plugin: 'com.google.gms.google-services'
セット:
以下をアプリ/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'
}
}
}
}
最後に、ドキュメントで説明されているように、このステートメントをファイルの最後の行として貼り付けます。
apply plugin: 'com.google.gms.google-services'
最後に、 google-services.jsonファイルをダウンロードします。その他の情報については、相対的な文書を参照してください
カスタムアプリケーションクラスを作成します
public class AppContext extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this); // add this
}
}
Manifest.xmlに追加します
<application
android:name=".AppContext"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
...
</application>
Styles.xmlのデフォルトの親のテーマを置き換えます
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
に
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
あなたは次のようなものを取得します:
<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>
chat21 SDKは、チャットにカスタム動作と設定を設定できるchat.configurationオブジェクトを提供します。
CHAT21SDKの新しいインスタンスを作成するには、独自の構成を作成する必要があります(ChAT21SDK chat.configuration.builderを使用) 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>);
交換する:
<APP_ID> appidを使用。<FIREBASE_URL> 。<STORAGE_BUCKET> FireBaseアプリのFireBae Storage Bucket URLを使用してください。<CONTEXT> with your context;<LOGGED_USER>現在のログユーザーを使用して、それがiChatuserのインスタンスであると仮定していますChatuiを使用すると、一般的なUI要素をchat21 SDK APIにすばやく接続できます。
Chatuiでは、アクティビティと断片の内側の両方でチャットを開始できます。
次の命令でChatuiコンポーネントを初期化します
ChatUI.getInstance().setContext(this);
会話のリストを含む新しいアクティビティを開始します。
ChatUI.getInstance().showConversationsListActivity();
内部に容器が付いたフラグメントを作成する必要があります。
チャットは、会話のリストが表示されるこのコンテナ内で開始されます。
<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>
これで、次の方法でチャットを表示できます。
ChatUI.getInstance().openConversationsListFragment(getChildFragmentManager(), R.id.container);
com.android.support内の競合
エラー:
* What went wrong:
Execution failed for task ':app:processDebugResources'.
> Failed to execute aapt
解決策:ファイルの下部にこのブロックをコピーする/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'
}
}
}
}
マルチデックス
エラー:
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
解決策: /project/app/build.gradleの内部にmultiDexEnabled trueが追加されていることを確認してください
このブロックをカスタムアプリケーションクラス内にコピーします
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
テーマ
エラー:
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.
解決策:スタイルセクションを参照してください
アプリケーション名の例外:
エラー:
/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
解決策: tools:replace="android:label" 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>
```
このガイドに従って、独自のライブラリをJCenterに展開する