كيف تعمل
كل حزمة جوال هي غلاف أصيل رفيع حول صفحة المحادثة المستضافة نفسها — فتحصل على تجربة الودجت الكاملة، محدّثة من الخادم، ببصمة صغيرة.
تحمّل الحزمة صفحة المحادثة المستضافة (/widget/mobile) داخل WebView خاص بالمنصة. ويُمرَّر معرّف مساحة العمل واللغة ولون العلامة وبيانات الزائر كمعاملات في الرابط، فتنطلق الودجت مهيّأة وجاهزة.
تُمرَّر أحداث الودجت من الصفحة إلى كودك الأصيل عبر قناة رسائل، ويتحكّم الكود الأصيل في الودجت عبر واجهة JavaScript مُحقونة تُسمّى AwnCareMobile. هذا الجسر ثنائي الاتجاه هو ما يشغّل التعريف وشارات غير المقروء والتحكم في الفتح والإغلاق.
رابط المحادثة المستضاف
هذه هي الصفحة التي تحمّلها كل حزمة. لا تبنيها عادةً يدويًا — بل تجمّعها الحزمة لك من الإعدادات التي تمرّرها. ومعامل metadata عبارة عن JSON مُرمَّز بصيغة base64url.
iOS · سويفت
حزمة Swift لتطبيقات UIKit وSwiftUI، تُوزَّع عبر Swift Package Manager.
التثبيت
أضِف الحزمة في Xcode من رابط Git الخاص بها، أو صرّح بها في Package.swift، ثم استورد AwnCareSDK.
البدء السريع
هيّئ مرة واحدة بمعرّف مساحة العمل، ثم اعرض المحادثة بملء الشاشة من أي view controller.
تعريف الزائر
أرفِق هوية الزائر ليرى الوكلاء جهة اتصال معروفة الاسم. حدّث اللغة أو امسح الهوية عند تسجيل الخروج.
الأحداث
تفاعل مع الودجت عبر closures على النسخة المشتركة، أو بتبنّي البروتوكول AwnCareDelegate.
ملء الشاشة مقابل التضمين
لملء الشاشة استدعِ AwnCare.present(from:). ولتضمين المحادثة داخل تخطيطك الخاص، أضِف AwnCareChatViewController كـ view controller فرعي.
Android · كوتلن
مكتبة Android لتطبيقات Kotlin وJava، تُوزَّع عبر JitPack.
التثبيت
أضِف مستودع JitPack والاعتمادية إلى ملفات Gradle، ثم استورد care.awn.sdk.AwnCare.
البدء السريع
هيّئ مرة واحدة بمعرّف مساحة العمل، ثم افتح المحادثة بملء الشاشة من سياق أي Activity أو Fragment.
تعريف الزائر
أرفِق هوية الزائر ليرى الوكلاء جهة اتصال معروفة الاسم. حدّث اللغة أو امسح الهوية عند تسجيل الخروج.
الأحداث
سجّل AwnCareListener لاستقبال استدعاءات الجاهزية وعدد غير المقروء وبدء المحادثة والإغلاق.
ملء الشاشة مقابل التضمين
لملء الشاشة استدعِ AwnCare.open(context). ولتضمين المحادثة في تخطيطك، ضع AwnCareChatView في ملف XML وهيّئه من الكود.
Flutter
إضافة Flutter مبنية على webview_flutter لنظامي iOS وAndroid من قاعدة كود Dart واحدة.
التثبيت
أضِف اعتمادية git وwebview_flutter إلى pubspec.yaml، ثم شغّل flutter pub get.
البدء السريع
هيّئ مرة واحدة بمعرّف مساحة العمل، ثم ادفع AwnCareChatScreen كمسار بملء الشاشة.
تعريف الزائر
أرفِق هوية الزائر ليرى الوكلاء جهة اتصال معروفة الاسم. حدّث اللغة أو امسح الهوية عند تسجيل الخروج.
الأحداث
مرّر callbacks إلى AwnCareChatScreen، أو اشترك في تدفّق AwnCareEvents العام للمعالجة على مستوى التطبيق.
ملء الشاشة مقابل التضمين
لملء الشاشة ادفع AwnCareChatScreen عبر Navigator. ولتضمين المحادثة، ضع ودجت AwnCareChatView في أي مكان من شجرة الودجت.
React Native
مكوّن React Native مبني على react-native-webview، يُثبَّت مباشرة من GitHub.
التثبيت
ثبّت الحزمة وreact-native-webview من npm، ثم ثبّت pods الخاصة بـ iOS.
البدء السريع
اعرض مكوّن AwnCareChat بمعرّف مساحة العمل ودعه يملأ الشاشة.
تعريف الزائر
مرّر خاصية identity، أو تحكّم في المحادثة برمجيًا عبر ref لاستدعاء identify وsetLocale وlogout.
الأحداث
عالج الأحداث عبر الخصائص onReady وonUnreadCountChanged وonConversationStarted وonMessageReceived وonClosed.
ملء الشاشة مقابل التضمين
AwnCareChat مجرّد View — اعرضه بملء الشاشة، أو داخل أي حاوية محدّدة الأبعاد لتضمينه.
الجسر والأحداث
يقوم عقد الأحداث نفسه خلف كل حزمة. في الخلفية، تتبادل الصفحة المستضافة وكودك الأصيل الرسائل عبر هذا الجسر.
الأحداث الصادرة من الودجت
تُرسِل صفحة المحادثة المستضافة هذه الأحداث إلى الطبقة الأصيلة. وتقدّمها كل حزمة على شكل callbacks أو delegates أو listeners بأسلوب المنصة.
| الحدث | الحمولة | الوصف |
|---|---|---|
ready | — | اكتمل تحميل صفحة المحادثة وأصبحت جاهزة للاستخدام. |
open | — | فُتحت نافذة المحادثة. |
close | — | أُغلقت نافذة المحادثة — أغلِق الشاشة أو امسح الشارة. |
unread | { count } | تغيّر عدد الرسائل غير المقروءة — حدّث شارة تطبيقك أو أيقونته. |
conversation:started | { conversationId } | أُنشئت محادثة جديدة. |
message:received | { text, sender } | وصلت رسالة من وكيل أو بوت؛ وقيمة sender إمّا "agent" أو "bot". |
واجهة AwnCareMobile
يتحكّم الكود الأصيل في الودجت باستدعاء واجهة JavaScript هذه المحقونة في الـ WebView. وتغلّف كل حزمة هذه الاستدعاءات بطرق أصيلة فنادرًا ما تلمس الجسر مباشرة.
| الحقل | النوع | الوصف |
|---|---|---|
identify(identity) | → void | إرفاق أو تحديث هوية الزائر (الاسم والبريد والمعرّف الخارجي والبيانات الإضافية). |
setLocale(locale) | "ar" | "en" | تبديل لغة واجهة الودجت أثناء التشغيل. |
logout() | → void | مسح هوية الزائر الحالية لبدء جلسة جديدة. |
open() | → void | فتح نافذة المحادثة برمجيًا. |
الإشعارات (Push)
نبّه الزوّار على هواتفهم عندما يردّ موظف أو روبوت والتطبيق مغلق — باستخدام مشروع Firebase الخاص بك.
البنية — أحضِر مشروع Firebase الخاص بك
لا يضمّن AwnCare مكتبة Firebase إطلاقًا. يُحضِر مالك التطبيق مشروع Firebase الخاص به ويلصق ملف JSON لحساب الخدمة في التكاملات. تُمرّر حزم SDK للجوال رموز الأجهزة المرتبطة بالزائر الحالي، ويرسل خادم AwnCare الإشعار عبر واجهة FCM HTTP v1 كلما ردّ موظف أو روبوت على زائر غير متصل.
بما أنّك تملك مشروع Firebase، يبقى التسليم والحصص وشهادات APNs تحت سيطرتك بالكامل. لا يحتفظ AwnCare سوى ببيانات اعتماد حساب الخدمة ورموز الأجهزة التي يمرّرها تطبيقك إليه.
إعداد مساحة العمل
من لوحة التحكم، افتح التكاملات ← «الإشعارات (FCM)»، ثم الصق ملف JSON لحساب خدمة Firebase واضغط اتصال. يُختبَر الاتصال قبل الحفظ، ويظهر معرّف المشروع المُستخرَج على البطاقة.
تمرير رموز الأجهزة ومعالجة النقر
في كل تطبيق، مرّر رمز جهاز FCM إلى AwnCare عبر setPushToken (الآن ومع كل تحديث)، وافتح المحادثة عند نقر المستخدم على الإشعار. يصل معرّف المحادثة في data.conversationId.
iOS · سويفت
اجلب الرمز من FirebaseMessaging ومرّره؛ وعالِج النقر في مفوّض UNUserNotificationCenter.
Android · كوتلن
مرّر الرمز من FirebaseMessagingService.onNewToken، وأنشئ إشعارك الخاص الذي يفتح المحادثة عند النقر.
Flutter
مرّر getToken() و onTokenRefresh؛ وافتح شاشة المحادثة من onMessageOpenedApp.
React Native
مرّر messaging().getToken() إلى مرجع المحادثة، وتنقّل من onNotificationOpenedApp.
عقد الحمولة (Payload)
كل إشعار يرسله AwnCare يتّبع هذا الشكل. جميع قيم data نصوص.
| الحقل | القيمة |
|---|---|
notification.title | اسم مساحة العمل الخاصة بك. |
notification.body | نص الردّ — مع إزالة تنسيق Markdown واقتطاعه إلى 120 حرفًا. |
data.conversationId | معرّف المحادثة التي ستُفتح عند النقر على الإشعار. |
data.type | دائمًا النص الحرفي "awncare_message" — استخدمه لاكتشاف إشعارات AwnCare. |