1. مقدمة
الأهداف
في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية إعداد تطبيقك المتوافق مع عدّة منصات لتتمكّن من إرسال رسائل الدفع المتعددة إلى مجموعات فرعية مختلفة من مثيلات تطبيقك باستخدام مواضيع FCM.
بعد الانتهاء، ستتمكّن من الاستفادة من البنية الأساسية لخدمة FCM لإدارة هذه المجموعات الفرعية بالإضافة إلى إرسال رسائل الإشعارات المتعددة إلى المجموعات الفرعية.
نظرة عامة على المواضيع
المواضيع هي طريقة تستند إلى البنية الأساسية لخدمة FCM وتتيح الوصول إلى مجموعات فرعية من مثيلات تطبيقك من خلال الرسائل.
توفّر خدمة FCM واجهات برمجة التطبيقات لإرسال الرسائل بالإضافة إلى الحفاظ على الاشتراكات في هذه المواضيع. يُطلق على عملية ربط مثيل تطبيق بموضوع وفصله عنه اسمَي الاشتراك وإلغاء الاشتراك على التوالي.
يجب استخدام المواضيع للمحتوى المتاح للجميع. على سبيل المثال، الرسائل التي تتضمّن معلومات حول أحوال الطقس. إذا كنت تريد إرسال رسائل تتضمّن معلومات حسّاسة عن المستخدمين، استخدِم حزمة تطوير البرامج (SDK) للمشرف في Firebase من أجل إرسال رسائل إلى عدة أجهزة.
تم تحسين البث المتعدد المستند إلى المواضيع لتحقيق معدل نقل بيانات أفضل.
ما ستتعلمه
- كيفية اشتراك المستخدمين في المواضيع (وإلغاء الاشتراك فيها) من تطبيق على الجهاز الجوّال
- كيفية إرسال رسائل فورية متعددة البث باستخدام المواضيع
- كيفية إرسال الرسائل إلى مجموعة من المواضيع باستخدام شروط المواضيع
- كيفية إدارة الاشتراكات في المواضيع من جهة الخادم وإجراء عمليات الاشتراك وإلغاء الاشتراك بشكل مجمّع
ما ستنشئه
- تطبيق Android يشترك في المواضيع أو يلغي الاشتراك فيها ويتلقّى الرسائل عند إرسالها إلى المواضيع
- عملية دمج من جهة الخادم باستخدام حزمة Firebase Admin SDK، وسيتم استخدامها لإرسال رسائل المواضيع من خلال واجهات برمجة التطبيقات الخاصة بخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" (FCM).
المتطلبات
- متصفّح من اختيارك، مثل Chrome
- بيئة التطوير المتكاملة IntelliJ IDEA لتطوير تطبيقات Java
- احرص على تفعيل دعم Gradle أثناء التثبيت.
- استوديو Android: بيئة تطوير متكاملة (IDE) لتطوير تطبيقات Android
- جهاز لتشغيل تطبيق Android أيّ مما يلي:
- محاكي Android (يجب إعدادها في استوديو Android).
- جهاز Android فعلي متصل بجهاز الكمبيوتر وتم ضبطه على وضع المطوّر.
- حساب Google لإنشاء مشروعك على Firebase وإدارته
2. بدء الإعداد
الحصول على الرمز
استنسِخ مستودع GitHub من سطر الأوامر:
git clone https://github.com/firebase/quickstart-android.git fcm-codelab
سيتم استنساخ نموذج التعليمات البرمجية في الدليل fcm-codelab
.
cd fcm-codelab
يتوفّر تطبيق البداية لهذا الدرس العملي في الدليل messaging
من الفرع fcm-topics-codelab
. اتّبِع الخطوات التالية للوصول إلى رمز البداية. يحتوي على دليلَين StockNewsApp
وStockNewsServer
. يحتوي الأول على تطبيق Android التجريبي، بينما يحتوي الثاني على رمز تجريبي من جهة الخادم.
git checkout fcm-topics-codelab cd messaging/fcm-topics-codelab/starter
يتم وضع النسخة المكتملة من هذا الدرس العملي في الدليل messaging/fcm-topics-codelab/completed
.
إنشاء مشروع Firebase
- سجِّل الدخول إلى وحدة تحكّم Firebase باستخدام حسابك على Google.
- انقر على الزر لإنشاء مشروع جديد، ثم أدخِل اسم المشروع (على سبيل المثال،
StockNews
).
- انقر على متابعة.
- إذا طُلب منك ذلك، راجِع بنود Firebase واقبلها، ثم انقر على متابعة.
- (اختياري) فعِّل ميزة "المساعدة المستندة إلى الذكاء الاصطناعي" في وحدة تحكّم Firebase (المعروفة باسم "Gemini في Firebase").
- في هذا الدرس العملي، لا تحتاج إلى "إحصاءات Google"، لذا أوقِف خيار "إحصاءات Google".
- انقر على إنشاء مشروع، وانتظِر إلى أن يتم توفير مشروعك، ثم انقر على متابعة.
تهانينا! لقد أنشأت للتو مشروعك على Firebase.
3- إعداد تطبيق Firebase الخاص بالنظام الأساسي
تمّت إضافة معظم التغييرات في الرمز البرمجي المطلوبة لتفعيل ميزة التوافق مع Firebase إلى المشروع الذي تعمل عليه. ومع ذلك، لإضافة دعم لمنصات الأجهزة الجوّالة، عليك إجراء ما يلي:
- تسجيل المنصّة المطلوبة في مشروع Firebase
- نزِّل ملف الإعداد الخاص بالنظام الأساسي وأضِفه إلى الرمز.
لأغراض هذا الدرس العملي، سنضيف تطبيق Android Firebase.
ضبط Android
- في وحدة تحكّم Firebase، اختَر إعدادات المشروع في أعلى شريط التنقّل الأيمن في رمز الإعدادات، وانقر على رمز Android ضِمن تطبيقاتك في صفحة عام.
من المفترض أن يظهر لك مربّع الحوار التالي :
- القيمة المهمة التي يجب تقديمها هي اسم حزمة Android. اضبطه على
com.ticker.stocknews
.- يجب أن يكون اسم الحزمة المقدَّم هنا هو نفسه المقدَّم في
AndroidManifest.xml
لرمز StockNewsApp الأوّلي. إذا أردت تحديد موقعها أو تغييرها، اتّبِع الخطوات التالية:- في دليل StockNewsApp، افتح الملف
app/src/main/AndroidManifest.xml
. - في العنصر
manifest
، ابحث عن قيمة السلسلة للسمةpackage
. هذه القيمة هي اسم حزمة Android.
- في دليل StockNewsApp، افتح الملف
- يجب أن يكون اسم الحزمة المقدَّم هنا هو نفسه المقدَّم في
- في مربّع حوار Firebase، الصِق اسم الحزمة المنسوخ في الحقل اسم حزمة Android.
- لست بحاجة إلى شهادة توقيع تصحيح الأخطاء SHA-1 في هذا الدرس العملي، لأنّه لن يتم إصدار هذا التطبيق. اترك هذا الحقل فارغًا.
- انقر على تسجيل التطبيق.
- في وحدة تحكّم Firebase، اتّبِع التعليمات لتنزيل ملف الإعداد
google-services.json
. - يمكنك تخطّي خطوات الإعداد المتبقية، لأنّ كل شيء آخر تم إعداده مسبقًا في رمز تطبيق البداية. سيظهر تطبيقك في الصفحة الرئيسية لوحدة تحكّم Firebase.
- انسخ الملف
google-services.json
(الذي نزّلته للتو) إلى الدليلmessaging/fcm-topics-codelab/starter/StockNewsApp/app
.
4. إنشاء تطبيقك وتشغيله
أنت الآن جاهز لبدء العمل على تطبيقك. أولاً، أنشئ التطبيق وشغِّله.
استيراد تطبيق البداية
ابدأ تشغيل Android Studio، واستورِد messaging/fcm-topics-codelab/starter/StockNewsApp
من دليل الرموز البرمجية المُعدّة مسبقًا للمبتدئين.
بعد تحميل المشروع، قد يظهر لك أيضًا تنبيه بأنّ Git لا يتتبّع جميع التغييرات المحلية، ويمكنك النقر على تجاهل أو على X في أعلى يسار الشاشة. (لن يتم إرسال أي تغييرات إلى مستودع Git).
في أعلى يمين نافذة المشروع، من المفترض أن يظهر لك ما يشبه الصورة أدناه إذا كنت في طريقة العرض Android. (إذا كنت في طريقة عرض المشروع، عليك توسيع المشروع لرؤية الشيء نفسه)
يُرجى العِلم أنّ "استوديو Android" قد يستغرق عدة ثوانٍ لتجميع المشروع في الخلفية للمرة الأولى. خلال هذه الفترة، سيظهر لك رمز انتظار في شريط الحالة في أسفل "استوديو Android":
ننصحك بالانتظار إلى أن تنتهي هذه العملية قبل إجراء تغييرات على الرمز. سيسمح ذلك لـ Android Studio بجلب جميع المكوّنات الضرورية.
بالإضافة إلى ذلك، إذا ظهرت لك رسالة تطلب منك إعادة التحميل لكي تصبح تغييرات اللغة سارية، انقر على "نعم".
إعداد المحاكي
إذا كنت بحاجة إلى مساعدة في إعداد محاكي Android، يُرجى الرجوع إلى المقالة تشغيل تطبيقك.
التعرّف على الرمز الأوّلي لتطبيق Android
- الرمز الأولي هو تطبيق Android خفيف الوزن يتضمّن الحد الأدنى من الوظائف وواجهة المستخدم.
- تمّت إضافة تبعية إلى حزمة تطوير البرامج (SDK) لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" إلى الملف
app/build.gradle
.
- في
AndroidManifest.xml
، تمت إضافة معالج ردّ الاتصالMESSAGING_EVENT
.- يوسّع معالج الأحداث هذا،
StockNewsMessagingService.java
، فئةFirebaseMessagingService
التي توفّر وظائف مختلفة ذات صلة بخدمة "المراسلة عبر السحابة الإلكترونية من Firebase". لمزيد من المعلومات، يمكنك الاطّلاع على مستندات FirebaseMessagingService.
- يتم استدعاء الدالة
onNewToken
عند إنشاء رمز التسجيل في FCM أو إعادة تحميله. لمزيد من المعلومات، يُرجى الاطّلاع على مراقبة إنشاء الرموز المميزة. - يتم استدعاء الدالة
onMessageReceived
عند تلقّي رسالة ويكون التطبيق في المقدّمة. في الوقت الحالي، يتم تسجيل الرسالة المستلَمة فقط.- اطّلِع على تلقّي الرسائل في تطبيق Android لمعرفة المزيد عن الاختلافات بين تسليم الرسائل ومعالجتها في الخلفية وفي المقدّمة.
- يوسّع معالج الأحداث هذا،
- بالإضافة إلى ذلك، في
AndroidManifest.xml
، يتم توفير فئةApplication
Android أيضًا باسمStockNewsApplication
.- سيكون هذا الصف هو أول صف يتم إنشاء مثيل له عند بدء تشغيل التطبيق.
- في الدالة
onCreate
الخاصة بالفئةStockNewsApplication
، تتم إضافة طلب إنشاء "رمز تسجيل" في FCM. سيتم إنشاء رمز تسجيل صالح في خدمة FCM وتسجيله.
- يضيف
MainActivity.java
RecyclerView
الذي يعرض خيارات "فئة السلع". - تنفِّذ
SubscriptionAdapter.java
الفئةRecyclerView.Adapter
التي تعرض شاشة اختيار فئة المستودع.- تحتوي كل فئة من فئات الأسهم على اسم ومفتاح تبديل اشتراك بجانبها.
- يجب أن يؤدي تغيير زر التبديل إلى إجراء مكالمة للاشتراك في موضوع FCM أو إلغاء الاشتراك فيه.
- ستنفّذ هذه الطلبات في الأقسام القادمة.
- يحتوي الصف
model/StockCategories.java
على قائمة بجميع فئات الأسهم وأسماء المواضيع المرتبطة بها.
تشغيل تطبيق المبتدئين
- وصِّل جهاز Android بالكمبيوتر أو ابدأ محاكيًا.
- في شريط الأدوات العلوي، اختَر جهاز Android أو المحاكي المستهدفَين واضغط على زر التشغيل.
- ستبدو واجهة مستخدم التطبيق على النحو التالي:
- سينشئ التطبيق رمز تسجيل في FCM ويسجّله. ومع ذلك، لن يتغيّر أي شيء في واجهة مستخدم التطبيق.
- انسخ رمز التسجيل في "المراسلة عبر السحابة الإلكترونية من Firebase" واحفظه لأنّه سيتم استخدامه في الخطوات التالية.
5- إرسال رسالة اختبار
أنت الآن جاهز لإرسال رسالة اختبار إلى مثيل التطبيق الذي أعددته في الخطوة الأخيرة.
استيراد رمز الخادم المبدئي
ابدأ IntelliJ IDEA وافتح مشروع messaging/fcm-topics-codelab/starter/StockNewsServer
.
يجب أن يظهر عرض المشروع في شريط التنقّل الأيمن على النحو التالي:
يُرجى العِلم أنّه قد يستغرق إنشاء مشروعك في IntellIj IDEA بضع دقائق، بما في ذلك جلب التبعيات المطلوبة.
التعرّف على رمز بدء تشغيل الخادم
- رمز بدء تشغيل الخادم هو مشروع Java يستند إلى Gradle.
- يحتوي الملف
build.gradle
على الاعتمادية على حزمة تطوير البرامج (SDK) لخدمة Firebase Admin. توفّر حزمة تطوير البرامج (SDK) هذه إمكانية الوصول إلى وظائف إرسال رسائل FCM المختلفة.
- أخيرًا، هناك فئتان، وهما:
-
FcmSender.java
: يحتوي هذا الصف على الطرق التالية للملاحظة:-
initFirebaseSDK
: تهيئة حزمة تطوير البرامج (SDK) الخاصة بـ firebase-admin. -
sendMessageToFcmRegistrationToken
: لإرسال رسالة إلى رمز تسجيل في "المراسلة عبر السحابة الإلكترونية من Firebase" -
sendMessageToFcmTopic
: إرسال رسالة إلى موضوع في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" -
sendMessageToFcmTopicCondition
: إرسال رسالة إلى شرط موضوع في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase"
-
-
FcmSubscriptionManager.java
: يحتوي هذا الصف على طرق تتيح إدارة الاشتراكات في المواضيع من جهة الخادم.-
initFirebaseSDK
: تهيئة حزمة تطوير البرامج (SDK) الخاصة بـ firebase-admin. - استبدِل
subscribeFcmRegistrationTokensToTopic
بما يلي: تسجيل الرموز المميزة للتسجيل في "المراسلة عبر السحابة الإلكترونية من Firebase" في أحد مواضيع "المراسلة عبر السحابة الإلكترونية من Firebase". -
unsubscribeFcmRegistrationTokensFromTopic
: إلغاء الاشتراك في رموز التسجيل المميزة في "المراسلة عبر السحابة الإلكترونية من Firebase" من أحد مواضيع "المراسلة عبر السحابة الإلكترونية من Firebase"
-
-
إعداد رمز الخادم
- أولاً، علينا إعداد حساب خدمة Firebase الذي يسمح لحزمة تطوير البرامج (SDK) الخاصة بـ firebase-admin بتفويض طلبات إلى واجهات برمجة تطبيقات FCM.
- انتقِل إلى "وحدة تحكّم Firebase"، وانقر على رمز الترس بجانب نظرة عامة على المشروع في شريط التنقّل الأيمن، ثم اختَر إعدادات المشروع.
- في صفحة الإعدادات، اختَر حسابات الخدمة وانقر على إنشاء حساب خدمة.
- انقر الآن على الزر إنشاء مفتاح خاص جديد وسيبدأ التنزيل التلقائي لملف المفتاح.
- أعِد تسمية ملف المفتاح إلى
service-account.json
وانسخه في المجلدmessaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
. - يحمّل كلّ من
FcmSender.java
وFcmSubscriptionManager.java
الملفservice-account.json
من مسار الفئة باستخدام الرمز التالي.
- انتقِل إلى "وحدة تحكّم Firebase"، وانقر على رمز الترس بجانب نظرة عامة على المشروع في شريط التنقّل الأيمن، ثم اختَر إعدادات المشروع.
- في هذه المرحلة، يكون رمز الخادم جاهزًا. نفِّذ "إنشاء" -> "إنشاء المشروع" من شريط القوائم في أعلى الصفحة.
إرسال رسالة اختبار
- في
FcmSender.java
، ابحث عن الدالةsendMessageToFcmRegistrationToken
وأدرِج رمز التسجيل في FCM الذي نسخته من قسم تشغيل التطبيق الأوّلي في الحقلregistrationToken
. - في الدالة
main
، أزِل التعليق من الدالةsendMessageToFcmRegistrationToken
فقط وانقر على "تشغيل" لتنفيذ الرمز.- لاحظ كيف يتم ضبط رمز التسجيل في FCM في الحقل
Token
الخاص بالكائنmessage
. - بالإضافة إلى ذلك، لاحظ كيف استخدمنا واجهة برمجة التطبيقات
send
الخاصة بواجهةFirebaseMessaging
.
- لاحظ كيف يتم ضبط رمز التسجيل في FCM في الحقل
- من المفترض أن يؤدي ذلك إلى إرسال رسالة إلى مثيل التطبيق الذي أعددته في الخطوة السابقة.
- عندما تكون نسخة التطبيق في المقدّمة، من المفترض أن يظهر لك محتوى الرسالة الذي تم تسجيله.
- وعندما تكون نسخة التطبيق في الخلفية، ستلاحظ ظهور الرسالة في قائمة الإشعارات.
أحسنت، لقد استخدمت حزمة تطوير البرامج (SDK) الإدارية من Firebase لإرسال رسائل إلى مثيل تطبيق. مزيد من المعلومات حول استخدام حزمة تطوير البرامج (SDK) للمشرف في Firebase في الخادم
6. تنفيذ ميزة الاشتراك في المواضيع أو إلغاء الاشتراك فيها
في هذه الخطوة، ستنفّذ إجراءات الاشتراك في المواضيع وإلغاء الاشتراك فيها، وذلك من خلال مفتاح التبديل "فئة الأسهم" في تطبيق Android.
عندما يفعّل مستخدم تطبيق مفتاح التبديل لفئة أسهم معيّنة أو يوقفه، سيتم إجراء مكالمة للاشتراك في موضوع أو إلغاء الاشتراك فيه.
رمز المراجعة
- انتقِل إلى الفئة
SubscriptionAdapter.java
في رمز تطبيق Android وابحث عن الفئةRecyclerViewViewHolder
.
- تُعدّ الدالة الإنشائية للفئة أداة معالجة لزر التبديل الخاص بالاشتراك باستخدام
setOnCheckedChangeListener
. - استنادًا إلى زر التبديل، يتم تنفيذ إجراءات الاشتراك وإلغاء الاشتراك من خلال استدعاء الطريقتَين
subscribeToStockCategory
وunsubscribeFromStockCategory
على التوالي. - يتم استدعاء الطريقة
setData
من خلالonBindViewHolder
في أداة RecyclerView Adapter لربط ViewHolder بفئة الأسهم المناسبة.
تنفيذ ميزة الاشتراك في المواضيع
- في الطريقة
subscribeToStockCategory
، ستنفّذ طلب البيانات من واجهة برمجة التطبيقاتsubscribeToTopic
الخاصة بالكائنFirebaseMessaging
. قد يبدو الرمز البرمجي على النحو التالي:
void subscribeToStockCategory() { // Making call to FCM for subscribing to the topic for stockCategory FirebaseMessaging.getInstance().subscribeToTopic(stockCategory.getTopicName()).addOnSuccessListener( unused -> { // Subscribing action successful Log.i(TAG, "Subscribed to topic: " + stockCategory.getTopicName()); Toast.makeText(itemView.getContext(), "Subscribed to " + stockCategory.getCategoryName(), Toast.LENGTH_SHORT).show(); }); }
تنفيذ إلغاء الاشتراك في المواضيع
- وبالمثل، في شرط else، ستنفّذ طلب البيانات من واجهة برمجة التطبيقات
unsubscribeFromTopic
. في ما يلي مثال على ذلك:
void unsubscribeFromStockCategory() { // Making call to FCM for unsubscribing from the topic for stockCategory FirebaseMessaging.getInstance().unsubscribeFromTopic(stockCategory.getTopicName()) .addOnSuccessListener(unused -> { // Unsubscribing action successful Log.i(TAG, "Unsubscribed from topic: " + stockCategory.getTopicName()); Toast.makeText(itemView.getContext(), "Unsubscribed from " + stockCategory.getCategoryName(), Toast.LENGTH_SHORT).show(); }); }
لنجرّبها
- شغِّل التطبيق وفعِّل خيارات "فئة الأسهم" لتنفيذ إجراءَي "الاشتراك" و"إلغاء الاشتراك". سيبدو على النحو التالي:
اشتراك | إلغاء الاشتراك |
7. إرسال رسالة الموضوع الأولى
في هذه الخطوة، ستنفّذ رمزًا من جهة الخادم لإرسال رسالة موضوع FCM.
تنفيذ عملية الدمج من جهة الخادم لإرسال رسالة موضوع
- في رمز الخادم، انتقِل إلى
FcmSender.java
وابحث عن الطريقة المسماةsendMessageToFcmTopic
.
- في السطر الأول، أدخِل موضوع FCM الذي تريد إرسال الرسالة إليه.
- وهي سلسلة بالتنسيق:
/topics/<Topic Name>
. على سبيل المثال،/topics/Technology
.
- وهي سلسلة بالتنسيق:
- في الأسطر التالية، أنشئ كائن
message
جديدًا (مشابهًا للكائن المحدّد في الدالةsendMessageToFcmRegistrationToken
).- بدلاً من ضبط الحقل
Token
للكائنmessage
، عليك ضبط الحقلTopic
.
- بدلاً من ضبط الحقل
Message message = Message.builder() .putData("FOOTECH", "$1000") .setNotification( Notification.builder() .setTitle("Investor confidence in Tech Stocks growing") .setBody("Foo Tech leading the way in stock growth for Tech sector.") .build()) .setTopic(topicName) .build();
- الآن، أضِف طلبًا إلى مثيل
FirebaseMessaging
لإرسال الرسالة (مطابقًا لطلب الإرسال الذي تم إجراؤه في الدالةsendMessageToFcmRegistrationToken
).
FirebaseMessaging.getInstance().send(message);
- أخيرًا، عدِّل الدالة
main
وفعِّل استدعاء الدالةsendMessageToFcmTopic
فقط.
إرسال رسالة والتحقّق من استلامها
- قبل إرسال رسالة الموضوع، تأكَّد أولاً من أنّ مثيل تطبيقك مشترك في الموضوع الذي تريد الإرسال إليه.
- ويمكن إجراء ذلك من خلال النقر على زر التبديل المقابل. على سبيل المثال:
- يمكنك الآن إرسال رسالة الموضوع من خلال تنفيذ الدالة
main
الخاصة بـFcmSender.java
. - كما كان الحال في السابق، من المفترض أن تتمكّن من ملاحظة استلام الرسالة على مثيل التطبيق.
- مثيل التطبيق في المقدّمة
- مثيل التطبيق في الخلفية
- نصيحة إضافية: حاوِل إلغاء الاشتراك في الموضوع الذي أرسلت إليه الرسالة ثم أرسِل الرسالة مرة أخرى. ستلاحظ أنّه لا يتم تسليم الرسالة إلى مثيل التطبيق.
8. إرسال رسالة شرط الموضوع الأولى
تتيح لك ميزة شرط الموضوع إرسال رسائل إلى مجموعة من المواضيع، ما يتيح لك تقديم تعريف أكثر تعبيرًا للجمهور.
على سبيل المثال، في تطبيق StockNews، فكِّر في إمكانية إرسال رسائل إلى مجموعة من مثيلات التطبيق المشترِكة في مواضيع "التكنولوجيا" أو "السيارات". قد تحدث مثل هذه الحالة، على سبيل المثال، إذا كان هناك حدث جدير بالذكر يتضمّن Waymo.
تتيح لك المواضيع التعبير عن مجموعتك في شكل تعبير منطقي باستخدام العوامل التالية
- && : Logical AND. على سبيل المثال،
'Technology' in topics && 'Automotive' in topics
- يستهدف فقط مثيلات التطبيق التي تم الاشتراك فيها في كل من "مواضيع التكنولوجيا" و"مواضيع السيارات". - || : عامل OR المنطقي. على سبيل المثال،
'Technology' in topics || 'Automotive' in topics
- يستهدف مثيلات التطبيقات المشترِكة في مواضيع التكنولوجيا أو السيارات. - () : أقواس للتجميع على سبيل المثال،
'Technology' in topics && ('Automotive' in topics || 'Energy' in topics)
- يستهدف فقط مثيلات التطبيقات التي تم الاشتراك فيها في مواضيع التكنولوجيا و"السيارات" أو "الطاقة".
مزيد من المعلومات حول كيفية إنشاء طلبات إرسال لاستخدام هذه الوظيفة
تنفيذ عملية الدمج من جهة الخادم لإرسال رسالة شرط الموضوع
- في رمز الخادم، انتقِل إلى
FcmSender.java
وابحث عن الطريقة المسماةsendMessageToFcmTopicCondition
.
- في السطر الأول، بالنسبة إلى المتغيّر
topicCondition
، أدخِل شرط الموضوع الذي تريد إرسال الرسالة إليه. يمكنك ضبطه على:'Technology' in topics && 'Automotive' in topics
. - في الأسطر التالية، أنشئ عنصر
message
جديدًا (مشابهًا للعنصر المحدّد في الدالةsendMessageToFcmTopic
).- بدلاً من ضبط الحقل
Topic
للكائن، عليك ضبط الحقلCondition
.
- بدلاً من ضبط الحقل
Message message = Message.builder() .putData("FOOCAR", "$500") .setNotification( Notification.builder() .setTitle("Foo Car shows strong Q2 results") .setBody("Foo Car crosses 1B miles. Stocks rally.") .build()) .setCondition(topicCondition) .build();
- الآن، أضِف طلبًا إلى مثيل
FirebaseMessaging
لإرسال الرسالة (مطابقًا لطلب الإرسال الذي تم إجراؤه في الدالةsendMessageToFcmTopic
).
FirebaseMessaging.getInstance().send(message);
- أخيرًا، عدِّل الدالة
main
وفعِّل استدعاء الدالةsendMessageToFcmTopicCondition
فقط.
إرسال الرسالة والتحقّق من استلامها
- قبل إرسال رسالة الموضوع، تأكَّد أولاً من أنّ مثيل تطبيقك يستوفي شرط الموضوع المحدّد من خلال الاشتراك في موضوعَي "التكنولوجيا" و"السيارات".
- يمكنك الآن إرسال رسالة الموضوع من خلال تنفيذ الدالة
main
الخاصة بـFcmSender.java
. - كما كان من قبل، من المفترض أن تتمكّن من ملاحظة استلام الرسالة على مثيل التطبيق.
- مثيل التطبيق في المقدّمة
- مثيل التطبيق في الخلفية
- ميزة إضافية: يمكنك الآن إلغاء الاشتراك في موضوع "التكنولوجيا" وإعادة إرسال رسالة شرط الموضوع. يجب أن تلاحظ أنّ التطبيق لا يتلقّى الرسالة.
9. ملخّص
دعنا نلخّص سريعًا ما تعلّمته حتى الآن.
- كيفية بدء اشتراك في موضوع أو إلغاء الاشتراك فيه من مثيل تطبيق
- إرسال رسالة إلى الموضوع والتحقّق من استلامها على مثيلات التطبيق المشترَكة
- إرسال رسالة إلى موضوع شرط والتحقّق من استلامها على مثيل تطبيق يستوفي الشرط
في القسم التالي، ستتعرّف على كيفية الاشتراك في مثيلات التطبيق أو إلغاء الاشتراك فيها في مواضيع بدون الحاجة إلى إنشاء طلبات من جهة العميل.
10. إدارة الاشتراكات في المواضيع من جهة الخادم
حتى الآن، في هذا الدرس التطبيقي حول الترميز، يتم بدء جميع طلبات الاشتراك في المواضيع وإلغاء الاشتراك فيها من مثيل تطبيق.
ومع ذلك، في بعض حالات الاستخدام، قد تحتاج إلى إدارة الاشتراكات في المواضيع من جهة الخادم. على سبيل المثال، قد تريد أن تشترك مجموعة فرعية من قاعدة المستخدمين الحالية في موضوع جديد بدون انتظار طرح التطبيق.
في هذا القسم، ستتعرّف على كيفية استخدام حزمة تطوير البرامج (SDK) الخاصة بمسؤول Firebase للاشتراك في موضوع وإلغاء الاشتراك فيه لمجموعة من رموز التسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" من خلال إجراء مكالمات من جهة الخادم.
تنفيذ عملية الاشتراك من جهة الخادم في "رموز التسجيل" في "المراسلة عبر السحابة الإلكترونية من Firebase" ضمن موضوع "المراسلة عبر السحابة الإلكترونية من Firebase"
- في رمز الخادم، انتقِل إلى الفئة
FcmSubscriptionManager.java
. ابحث عن الطريقة المسماةsubscribeFcmRegistrationTokensToTopic
. ستنفّذ هنا طلب البيانات من واجهة برمجة التطبيقاتsubscribeToTopic
.
- لنُنشئ اشتراكًا لمثيل التطبيق في موضوع "الطاقة". لإجراء ذلك، عليك أولاً تقديم بيانات للحقلَين التاليَين:
-
registrationTokens
: قائمة سلاسل مفصولة بفواصل تمثّل رموز التسجيل في FCM التي تريد إنشاء اشتراكات في مواضيع لها. topicName
: اسم الموضوع الخاص بموضوع "الطاقة"، أي/topics/Energy
-
- في الأسطر القليلة التالية، نفِّذ عملية الاتصال على النحو التالي:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic( registrationTokens, topicName);
- يمكنك فحص
TopicManagementResponse
للاطّلاع على بعض الإحصاءات العامة للنتائج. مثل طباعة عدد الاشتراكات في المواضيع التي تم إنشاؤها بنجاح باستخدامgetSuccessCount
.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- أخيرًا، في الدالة
main
، فعِّل عمليات الاستدعاء للدالةsubscribeFcmRegistrationTokensToTopic
فقط.
إنشاء اشتراك وإرسال رسالة موضوع
- في هذه المرحلة، تكون مستعدًا لإنشاء اشتراك في الموضوع وإرسال رسالة إليه.
- نفِّذ الدالة
main
للفئةFcmSubscriptionManager.java
. سيؤدي ذلك إلى إنشاء اشتراك في الموضوع. - الآن، اضبط الرمز لإرسال الرسالة. كما في السابق،
- في
FcmSender.java
، ابحث عن الدالةsendMessageToFcmTopic
. - اضبط قيمة
topicName
على موضوع "الطاقة"، أي/topics/Energy
. - أنشئ عنصر
Message
واستهدِف الموضوع باستخدامsetTopic
. - أخيرًا، عدِّل طريقة
main
لتفعيل الدالةsendMessageToFcmTopic
فقط.
- في
- تنفيذ الدالة
main
الخاصة بـFcmSender.java
سيؤدي ذلك إلى إرسال الرسالة إلى مثيل تطبيقك ويمكنك ملاحظتها في تطبيقك على النحو التالي.- مثيل التطبيق في المقدّمة
- مثيل التطبيق في الخلفية
تنفيذ إلغاء الاشتراك من جهة الخادم في رموز التسجيل في "المراسلة عبر السحابة الإلكترونية من Firebase" لموضوع "المراسلة عبر السحابة الإلكترونية من Firebase"
- لإلغاء الاشتراك في المواضيع من جهة الخادم، استخدِم واجهة برمجة التطبيقات
unsubscribeFromTopic
. ستضيف الرمز البرمجي ذي الصلة إلى الدالةunsubscribeFcmRegistrationTokensFromTopic
في الفئةFcmSubscriptionManager.java
.
- يُترك لك تنفيذ رمز إلغاء الاشتراك من جهة الخادم والتحقّق من تأثيره عن طريق إرسال رسالة موضوع.
11. تهانينا
تهانينا، لقد نجحت في استخدام مواضيع FCM لإرسال رسائل البث المتعدد إلى مجموعات فرعية من مثيلات تطبيقك. سيساعدك ذلك في تبسيط قدرتك على الوصول إلى المستخدمين في الوقت المناسب من خلال المحتوى ذي الصلة.
ما هي الخطوات التالية؟
بعد إكمال هذا الدرس العملي، ننصحك بتجربة مواضيع لمنصات أخرى باستخدام الأدلة التالية: