Chat21 هو جوهر منصة الدردشة المباشرة مفتوحة المصدر TileSk.com.
مع chat21 Android SDK يمكنك:
| |
|
رمز مصدر التطبيق التجريبي متاح هنا
يمكنك بناء الدردشة الخاصة بك بعد البرنامج التعليمي الرسمي لدينا
قبل أن تبدأ ، تحتاج إلى بعض الأشياء لإعدادها في بيئتك:
أولاً ، قم بتضمين المكون الإضافي لـ Google-Services ومستودع Maven من Google إلى ملف Build.gradle على مستوى الجذر:
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.1.1'
}
}
allprojects {
// ...
repositories {
// ...
google()
}
}
بعد ذلك ، في ملف Gradle Module (عادةً ما يكون التطبيق/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
}
}
وأضفه إلى manesest.xml
<application
android:name=".AppContext"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
...
</application>
استبدل موضوع الأصل الافتراضي في أنماطك. 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 الذي يسمح بتعيين بعض السلوك والإعدادات المخصصة للدردشة الخاصة بك.
لإنشاء مثيل جديد لـ chat21 sdk ، يجب عليك إنشاء التكوين الخاص بك (باستخدام chat21 sdk 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> مع عنوان URL لقاعدة بيانات Firebae الخاص بك من تطبيق Firebase الخاص بك ؛<STORAGE_BUCKET> مع عنوان URL لدلو تخزين Firebae لتطبيق Firebase الخاص بك ؛<CONTEXT> مع سياقك ؛<LOGGED_USER> مع المستخدم المسجل الحالي الخاص بك ، على افتراض أنه مثيل لـ IChatuserيتيح لك Chatui توصيل عناصر واجهة المستخدم المشتركة بسرعة إلى APIs SDK STAL21.
يتيح لك 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'
}
}
}
}
multidex
خطأ:
Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
الحل: تأكد من إضافة multiDexEnabled true داخل /project/app/build.gradle
انسخ هذه الكتلة داخل فئة التطبيق المخصصة الخاصة بك
@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" لتجاوز اسم تطبيق STH21 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