تضمين نافذة الدردشة عبر الهاتف المحمول في تطبيق Android
الدردشة المباشرة: https://developers.livechat.com/docs/getting-started/installing-livechat/android-widget/
للحصول على مشروع في البناء الخاص بك:
الخطوة 1. أضف مستودع JitPack إلى ملف البناء الخاص بك، وأضفه في ملف build.gradle الجذري الخاص بك في نهاية المستودعات:
allprojects {
repositories {
.. .
maven { url ' https://jitpack.io ' }
}
}
الخطوة 2. أضف التبعية
dependencies {
implementation 'com.github.livechat:chat-window-android:v2.4.3'
}
سيحتاج تطبيقك إلى إذن لاستخدام الإنترنت. أضف السطر التالي إلى ملف AndroidManifest.xml الخاص بك:
< uses-permission android : name = " android.permission.INTERNET " />
هناك طريقتان يمكنك من خلالهما استخدام هذه المكتبة. لتتمكن من استخدام كافة الميزات، نوصيك بإضافة نافذة الدردشة كطريقة عرض، إما باستخدام طريقة ثابتة تضيف طريقة عرض إلى نشاطك، أو كطريقة عرض مضمنة في ملف XML الخاص بك. طالما أن ChatWindowView قيد التشغيل، فسوف تحصل على الأحداث عند وصول رسالة جديدة.
أولا، تحتاج إلى تكوين نافذة الدردشة الخاصة بك
ما عليك سوى استخدام مُنشئ ChatWindowConfiguration.java. لاحظ أن رقم الترخيص إلزامي.
configuration = new ChatWindowConfiguration (
"your_licence_number" ,
"group_id" , // optional
"Visitor name" , // optional
"[email protected]" , // optional
customParamsMap // optional
);
يمكنك أيضًا استخدام new ChatWindowConfiguration.Builder()
.
هناك طريقتان موصى بهما لاستخدام ChatWindow.
كل ما عليك فعله هو إنشاء نافذة الدردشة وإرفاقها وتهيئتها. شيء في السطور:
public void startFullScreenChat () {
if ( fullScreenChatWindow == null ) {
fullScreenChatWindow = ChatWindowUtils . createAndAttachChatWindowInstance ( getActivity ());
fullScreenChatWindow . setEventsListener ( this );
fullScreenChatWindow . init ( configuration );
}
fullScreenChatWindow . showChatWindow ();
}
إذا كنت ترغب في التحكم في مكان وحجم ChatWindowView، فقد ترغب في إضافته إلى تطبيقك إما عن طريق تضمين طريقة عرض في XML
< com .livechatinc.inappchat.ChatWindowViewImpl
android : id = " @+id/embedded_chat_window "
android : layout_width = " match_parent "
android : layout_height = " 400dp " />
أو تضخيم الرأي مباشرة
ChatWindowViewImpl chatWindowView = new ChatWindowViewImpl ( MainActivity . this );
ثم تهيئة ChatWindow كما هو الحال مع طريقة نافذة ملء الشاشة:
public void startEmmbeddedChat ( View view ) {
emmbeddedChatWindow . setEventsListener ( this );
emmbeddedChatWindow . init ( configuration );
// ...
emmbeddedChatWindow . showChatWindow ();
}
اعتمادا على حالة الاستخدام الخاصة بك، قد ترغب في إخفاء ChatWindow إذا قام المستخدم بالضغط على زر الرجوع. يمكنك استخدام وظيفة onBackPressed() الخاصة بنا والتي تخفي العرض إذا كان مرئيًا وترجع صحيحًا. في نشاطك/جزءك أضف ما يلي:
@ Override
public boolean onBackPressed () {
return fullScreenChatWindow != null && fullScreenChatWindow . onBackPressed ();
}
يمنحك هذا المستمع الفرصة للقيام بما يلي:
لتزويد المستخدمين بالقدرة على إرسال الملفات، تحتاج إلى إعدادها من خلال supportFileSharing
على ChatWindowView
. في حالة عدم قدرة نظام التشغيل على التعامل مع نية التقاط الملفات، يمكنك التعامل معها عبر رد الاتصال onFilePickerActivityNotFound
في ChatWindowEventsListener
.
يمكنك تعطيل السلوك الافتراضي لعنصر واجهة مستخدم الدردشة عندما يحدد المستخدم رابطًا عن طريق تطبيق طريقة handleUri
من ChatWindowEventsListener.
@ Override
public boolean handleUri ( Uri uri ) {
// Handle uri here...
return true ; // Return true to disable default behavior.
}
قد ترغب في تخصيص تجربة المستخدم عند مواجهة أخطاء، مثل مشاكل الاتصال بالإنترنت. من خلال إرجاع true
في طريقة رد الاتصال onError
فإنك تتحمل مسؤولية معالجة الأخطاء الواردة من نافذة الدردشة.
الرجاء الأخذ في الاعتبار أن نافذة الدردشة، بمجرد تحميلها، يمكنها التعامل مع مشكلات الاتصال عن طريق محاولة إعادة الاتصال بشكل متقطع. يمكن اكتشاف هذه الحالة من خلال تنفيذ الشرط التالي في طريقة رد الاتصال onError.
@ Override
public boolean onError ( ChatWindowErrorType errorType , int errorCode , String errorDescription ) {
if ( errorType == ChatWindowErrorType . WebViewClient && errorCode == - 2 && chatWindow . isChatLoaded ()) {
//Chat window can handle reconnection. You might want to delegate this to chat window
return false ;
} else {
reloadChatBtn . setVisibility ( View . VISIBLE );
}
Toast . makeText ( getActivity (), errorDescription , Toast . LENGTH_SHORT ). show ();
return true ;
}
بعد أن يقوم المستخدم بتسجيل الخروج من التطبيق، قد ترغب في مسح جلسة الدردشة. يمكنك القيام بذلك عن طريق استدعاء الأسلوب الثابت على ChatWindowUtils.clearSession()
من أي مكان في التطبيق. في حالة إرفاق ChatWindowView
الخاص بك أثناء تدفق تسجيل الخروج، ستحتاج أيضًا إلى إعادة تحميله عن طريق استدعاء chatWindow.reload()
بعد رمز ClearSession. راجع FullScreenWindowActivityExample.java
إذا لم تكن بحاجة إلى أن يتم إعلامك عندما يحصل المستخدم على رسالة جديدة في ChatWindow مخفية، فقد ترغب في استخدام ChatWindowActivity
أو ChatWindowFragment
من أجل فتح نافذة دردشة في النشاط الجديد، يجب عليك الإعلان عن ChatWindowActivity
في البيان الخاص بك. أضف السطر التالي إلى AndroidManifest.xml
، بين علامتي <application></application>
:
< activity
android : name = " com.livechatinc.inappchat.ChatWindowActivity "
android : configChanges = " orientation|screenSize "
android : exported = " false "
/>
أخيرًا، أضف الكود التالي إلى تطبيقك، في المكان الذي تريد فتح نافذة الدردشة فيه (على سبيل المثال، مستمع الزر). يتعين عليك توفير سياق (نشاطك أو كائن التطبيق) ورقم ترخيص LiveChat الخاص بك:
Intent intent = new Intent ( context , com . livechatinc . inappchat . ChatWindowActivity . class );
Bundle config = new ChatWindowConfiguration . Builder ()
. setLicenceNumber ( "<your_license_number>" )
. build ();
intent . putExtra ( ChatWindowConfiguration . KEY_CHAT_WINDOW_CONFIG , windowConfig );
startActivity ( intent );
من الممكن أيضًا تسجيل الدخول تلقائيًا إلى نافذة الدردشة من خلال توفير اسم الزائر والبريد الإلكتروني وتعطيل استطلاع ما قبل الدردشة.
من أجل فتح نافذة الدردشة في جزء جديد، تحتاج إلى إضافة الكود التالي إلى التطبيق الخاص بك، في المكان الذي تريد فتح نافذة الدردشة فيه (على سبيل المثال، مستمع الزر). تحتاج أيضًا إلى تقديم رقم ترخيص LiveChat الخاص بك:
getSupportFragmentManager ()
. beginTransaction ()
. replace (
R . id . frame_layout ,
ChatWindowFragment . newInstance (
"your_license_number" ,
"your_group_id" , // optional
"visitor_name" , // optional
"visitor_email" , // optional
),
"chat_fragment"
)
. addToBackStack ( "chat_fragment" )
. commit ();
من الممكن أيضًا تسجيل الدخول تلقائيًا إلى نافذة الدردشة من خلال تقديم اسم الزائر والبريد الإلكتروني إلى الجزء وتعطيل استطلاع ما قبل الدردشة.
يمكنك تغيير أو تعريب رسائل الخطأ، عن طريق تحديد موارد السلسلة الخاصة بك بالمعرفات التالية
< string name = " failed_to_load_chat " >Couldn't load chat.</ string >
< string name = " cant_share_files " >File sharing is not configured for this app</ string >
< string name = " reload_chat " >Reload</ string >
منذ الإصدار 2.4.0، تم إدراج تفاصيل الترحيل في CHANGELOG.md.
setUpWindow(configuration);
يتم استبداله بـ setConfiguration(configuration);
setUpListener(listener)
بـ setEventsListener(listener)
ChatWindowView.clearSession()
إلى ChatWindowUtils.clearSession(Context)
ChatWindowView.createAndAttachChatWindowInstance(Activity)
إلى ChatWindowUtils.createAndAttachChatWindowInstance(getActivity())
android.permission.READ_EXTERNAL_STORAGE
في ملف AndroidManifest.xml الخاص بكيتطلب تكامل SnapCall أذونات الصوت والفيديو. للسماح للمستخدمين باستخدام تكامل SnapCall، يجب عليك:
AndroidManifest.xml
الخاص بالتطبيق < uses-permission android : name = " android.permission.RECORD_AUDIO " />
< uses-permission android : name = " android.permission.MODIFY_AUDIO_SETTINGS " />
< uses-permission android : name = " android.permission.CAMERA " />
void onRequestAudioPermissions(String[] permissions, int requestCode)
لمطالبة المستخدم بالأذونات، كما يلي: @ Override
public void onRequestAudioPermissions ( String [] permissions , int requestCode ) {
if ( Build . VERSION . SDK_INT >= Build . VERSION_CODES . M ) {
this . requestPermissions ( permissions , requestCode );
}
}
void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
لتمرير النتيجة إلى ChatWindowView
if (! chatWindow . onRequestPermissionsResult ( requestCode , permissions , grantResults )) {
super . onRequestPermissionsResult ( requestCode , permissions , grantResults );
}
كمرجع، تحقق من FullScreenWindowActivityExample.java