1- مقدمة
الأهداف
في هذا الدرس التطبيقي حول الترميز، ستتعلّم كيفية التعامل مع تطبيقك المتعدّد الأنظمة الأساسية كي تتمكّن من إرسال رسائل فورية متعلقة بالبث المتعدد إلى مجموعات فرعية مختلفة من مثيلات تطبيقك باستخدام مواضيع "المراسلة عبر السحابة الإلكترونية من Firebase".
بعد الانتهاء، سيكون بإمكانك الاستفادة من البنية الأساسية لخدمة "المراسلة عبر السحابة الإلكترونية من Firebase" لإدارة هذه المجموعات الفرعية، بالإضافة إلى الرسائل الفورية التي يتم إرسال الرسائل باستخدام البث المتعدد إليها على المجموعات الفرعية.
نظرة عامة على المواضيع
المواضيع هي بنية أساسية متوافقة مع "المراسلة عبر السحابة الإلكترونية من Firebase" للوصول إلى المجموعات الفرعية من نُسخ تطبيقك من خلال الرسائل.
توفّر خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" واجهات برمجة التطبيقات لإرسال الرسائل بالإضافة إلى الاحتفاظ بالاشتراكات في هذه المواضيع. يُطلق على عملية ربط نسخة التطبيق وإلغاء ربطها بالموضوع "اشتراك" و"إلغاء الاشتراك" على التوالي.
يجب استخدام المواضيع للمحتوى المتاح للجميع. مثل، الرسائل المتعلّقة بالطقس. إذا كنت تريد إرسال رسائل حساسة للمستخدم، استخدِم حزمة تطوير البرامج (SDK) لمشرف Firebase من أجل بث الرسائل المتعددة على أجهزة متعددة.
تم تحسين البث المتعدد المستنِد إلى المواضيع لمعالجة سرعة معالجة البيانات.
المعلومات التي ستطّلع عليها
- كيفية اشتراك (وإلغاء اشتراك) المستخدمين في مواضيع من تطبيق للأجهزة الجوّالة.
- كيفية إرسال رسائل فورية للبث المتعدد باستخدام المواضيع
- كيفية إرسال الرسائل إلى مجموعة من المواضيع باستخدام شروط المواضيع
- كيفية إدارة اشتراكات المواضيع من جهة الخادم وإجراء الاشتراكات وإلغاء الاشتراكات بشكلٍ مجمّع.
ما الذي ستنشئه
- تطبيق Android يشترك في المواضيع أو يلغي الاشتراك فيها ويتلقّى الرسائل عند إرسالها إلى المواضيع.
- عملية دمج من جهة الخادم باستخدام حزمة تطوير البرامج (SDK) لمشرف Firebase، والتي سيتم استخدامها لإرسال رسائل بشأن المواضيع من خلال واجهات برمجة تطبيقات "المراسلة عبر السحابة الإلكترونية من Firebase".
المتطلبات
- متصفّح من اختيارك، مثل Chrome
- IntelliJ IDEA IDE لتطوير تطبيقات Java
- تأكد من الموافقة على دعم Gradle أثناء التثبيت.
- Android Studio لتطوير تطبيقات 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، انقر على إضافة مشروع، وأدخِل اسمًا لمشروع Firebase StockNews ثم انقر على "متابعة". ملاحظة: تذكّر رقم تعريف المشروع لمشروعك على Firebase (أو انقر على رمز تعديل لضبط رقم تعريف المشروع الذي تفضّله).
- يمكنك تخطّي عملية تفعيل "إحصاءات 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" بسحب جميع المكوّنات اللازمة.
بالإضافة إلى ذلك، إذا ظهرت رسالة تطلب منك "هل تريد إعادة التحميل لتطبيق التغييرات على اللغة؟" أو ما شابه ذلك، حدد "نعم".
إعداد المحاكي
إذا كنت بحاجة إلى مساعدة في إعداد محاكي 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. سينشئ هذا الرمز رمزًا مميّزًا صالحًا للتسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" وسيتم تسجيله.
- تضيف
MainActivity.java
السمةRecyclerView
التي تعرض خيارات فئة المخزون. - تنفِّذ
SubscriptionAdapter.java
الدالةRecyclerView.Adapter
التي ترسم شاشة اختيار "فئة الأسهم".- لكل فئة من فئات الأسهم اسم ومفتاح تبديل اشتراك بجانبها.
- من المفترض أن يؤدي تغيير مفتاح التبديل إلى إجراء مكالمة بشأن الاشتراك في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" أو إلغاء الاشتراك.
- سيتم تنفيذ هذه الاستدعاءات في الأقسام القادمة.
- تحتوي الفئة
model/StockCategories.java
على قائمة بجميع فئات الأسهم وأسماء المواضيع المرتبطة بها.
تشغيل تطبيق إجراء التفعيل
- وصِّل جهاز Android بجهاز الكمبيوتر أو ابدأ محاكيًا.
- في شريط الأدوات العلوي، حدد جهاز Android أو المحاكي المستهدف واضغط على الزر "تشغيل".
- ستبدو واجهة مستخدم التطبيق على النحو التالي:
- سينشئ التطبيق رمزًا مميَّزًا للتسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" ويسجِّله. ومع ذلك، لن يحدث أي تغيير في واجهة مستخدم التطبيق.
- انسخ الرمز المميّز للتسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" واحفظه لأنّه سيتم استخدامه في الخطوات التالية.
5- إرسال رسالة اختبار
أنت الآن جاهز لإرسال رسالة اختبار إلى مثيل التطبيق الذي أعددته في الخطوة الأخيرة.
استيراد رمز خادم إجراء التفعيل
شغِّل IntelliJ IDEA وافتح مشروع messaging/fcm-topics-codelab/starter/StockNewsServer
.
من المفترض أن يبدو عرض المشروع في شريط التنقل الأيمن على النحو التالي:
لاحظ، قد يستغرق الأمر بضع دقائق حتى تتمكن IntellIj IDEA من إنشاء مشروعك، بما في ذلك سحب التبعيات المطلوبة.
التعرّف على رمز إجراء التفعيل الخاص بالخادم
- رمز البداية للخادم هو مشروع Java مستند إلى Gradle.
- يعتمد ملف
build.gradle
بالفعل على حزمة تطوير البرامج (SDK) الخاصة بـ Firebase-admin التي تمت إضافتها إليه. توفّر حزمة تطوير البرامج (SDK) هذه إمكانية الوصول إلى العديد من وظائف إرسال الرسائل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase".
- أخيرًا، هناك فئتان، بمعنى:
FcmSender.java
: تحتوي هذه الفئة على طرق الملاحظة التالية:initFirebaseSDK
: لإعداد حزمة تطوير البرامج (SDK) الخاصة بـ firebase-adminsendMessageToFcmRegistrationToken
: أرسِل رسالة إلى الرمز المميّز للتسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase".sendMessageToFcmTopic
: إرسال رسالة إلى موضوع "المراسلة عبر السحابة الإلكترونية من Firebase".sendMessageToFcmTopicCondition
: إرسال رسالة إلى أحد شروط موضوع "المراسلة عبر السحابة الإلكترونية من Firebase".
FcmSubscriptionManager.java
: تحتوي هذه الفئة على طرق تتيح إدارة الاشتراكات في المواضيع من جهة الخادم.initFirebaseSDK
: لإعداد حزمة تطوير البرامج (SDK) الخاصة بـ firebase-adminsubscribeFcmRegistrationTokensToTopic
: الاشتراك الرموز المميّزة للتسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" في موضوع خدمة "المراسلة عبر السحابة الإلكترونية من Firebase".unsubscribeFcmRegistrationTokensFromTopic
: إلغاء الاشتراك في الرموز المميّزة للتسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" من موضوع في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase".
إعداد رمز الخادم
- نحتاج أولاً إلى إعداد حساب على خدمة Firebase يسمح لحزمة تطوير البرامج (SDK) لمشرف Firebase بالسماح باستدعاءات واجهات برمجة تطبيقات المراسلة عبر السحابة الإلكترونية من Firebase.
- انتقِل إلى "وحدة تحكُّم Firebase"، وانقر على رمز الترس بجانب نظرة عامة على المشروع في شريط التنقّل الأيمن، واختَر إعدادات المشروع.
- في صفحة الإعدادات، اختَر حسابات الخدمة وانقر على إنشاء حساب خدمة.
- انقر الآن على الزر إنشاء مفتاح خاص جديد وسيبدأ التنزيل التلقائي لملف المفتاح.
- أعِد تسمية ملف المفتاح إلى "
service-account.json
" وانسخه في المجلد "messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
". - يُحمّل كل من
FcmSender.java
وFcmSubscriptionManager.java
ملفservice-account.json
من classpath باستخدام الرمز التالي.
- في هذه المرحلة، يكون رمز الخادم جاهزًا. تشغيل الإصدار -> إنشاء مشروع من شريط القوائم العلوي.
إرسال رسالة اختبار
- في
FcmSender.java
، ابحث عن الدالةsendMessageToFcmRegistrationToken
وأدخِل الرمز المميّز لتسجيل خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" الذي نسخته من القسم تشغيل تطبيق إجراء التفعيل في الحقلregistrationToken
. - في الدالة
main
، ألغِ التعليق على الدالةsendMessageToFcmRegistrationToken
فقط وانقر على "تشغيل" لتنفيذ الرمز البرمجي.- لاحظ كيفية ضبط الرمز المميّز للتسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" في الحقل
Token
للكائنmessage
. - يمكنك أيضًا الاطّلاع على كيفية استخدامنا لواجهة برمجة تطبيقات
send
الخاصة بواجهةFirebaseMessaging
.
- لاحظ كيفية ضبط الرمز المميّز للتسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" في الحقل
- من المفترض أن يؤدي ذلك إلى إرسال رسالة إلى مثيل التطبيق الذي أعددته في الخطوة السابقة.
- عندما يكون مثيل التطبيق في المقدّمة، من المفترض أن يظهر لك محتوى الرسالة الذي تم تسجيله.
- وعندما يكون مثيل التطبيق في الخلفية، ستلاحظ ظهور الرسالة في حاوية الإشعارات.
رائع، لقد استخدمت حزمة تطوير البرامج (SDK) لمشرف Firebase لإرسال الرسائل إلى مثيل تطبيق. اطّلِع على المزيد من المعلومات عن استخدام حزمة تطوير البرامج (SDK) لمشرف Firebase في خادمك.
6- تنفيذ الاشتراك في المواضيع / إلغاء الاشتراك
في هذه الخطوة، ستنفّذ إجراءات الاشتراك في المواضيع وإلغاء الاشتراك في خيار "فئة الأسهم" في تطبيق Android.
عندما يبدّل أحد مستخدمي التطبيق مفتاح التبديل لفئةٍ معيّنة من الأسهم، سيتم إجراء طلب اشتراك في أحد المواضيع أو إلغاء الاشتراك.
رمز المراجعة
- انتقِل إلى الصف
SubscriptionAdapter.java
باستخدام رمز تطبيق Android وحدِّد مكان الصفRecyclerViewViewHolder
.
- تُعدّ الدالة الإنشائية للفئة مستمعًا لتبديل الاشتراك باستخدام
setOnCheckedChangeListener
. - استنادًا إلى مفتاح التبديل، يتم تنفيذ إجراءَي الاشتراك وإلغاء الاشتراك من خلال الاتصال بالطريقتين
subscribeToStockCategory
وunsubscribeFromStockCategory
على التوالي. - يتم استدعاء طريقة
setData
بواسطةonBindViewHolder
في محوّل RecyclerView لربط 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(); }); }
تطبيق إلغاء الاشتراك في المواضيع
- وبالمثل، في حال استيفاء الشرط الآخر، عليك تنفيذ طلب البيانات إلى واجهة برمجة تطبيقات
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- إرسال رسالة الموضوع الأولى
في هذه الخطوة، ستُنفذ رمز جانب الخادم لإرسال رسالة موضوع خدمة "المراسلة عبر السحابة الإلكترونية من Firebase".
تنفيذ الدمج من جانب الخادم لإرسال رسالة الموضوع
- في رمز الخادم، انتقِل إلى
FcmSender.java
وحدِّد موقع الطريقة المسماةsendMessageToFcmTopic
.
- في السطر الأول، حدِّد موضوع "المراسلة عبر السحابة الإلكترونية من Firebase" الذي تريد إرسال الرسالة إليه.
- وهي سلسلة من النموذج:
/topics/<Topic Name>
. مثلاً:/topics/Technology
- وهي سلسلة من النموذج:
- في الأسطر التالية، أنشِئ كائن
message
جديدًا (مشابهًا للكائن المحدّد في الدالةsendMessageToFcmRegistrationToken
).- سيكون الاختلاف هو ضبط الحقل
Topic
بدلاً من ضبط الحقلToken
لكائنmessage
.
- سيكون الاختلاف هو ضبط الحقل
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.
تسمح لك Topics بالتعبير عن مجموعتك في شكل تعبير منطقي باستخدام عوامل التشغيل التالية
- & : منطقية 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
).- سيكون الاختلاف هو ضبط الحقل
Condition
بدلاً من ضبط الحقلTopic
للعنصر.
- سيكون الاختلاف هو ضبط الحقل
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 للاشتراك وإلغاء الاشتراك في مجموعة من الرموز المميّزة لتسجيل خدمة FCM في موضوع معيّن من خلال إجراء اتصالات من جهة الخادم.
تنفيذ اشتراك من جهة الخادم للرموز المميّزة للتسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" في موضوع المراسلة عبر السحابة الإلكترونية من Firebase
- في رمز الخادم، انتقِل إلى صف واحد (
FcmSubscriptionManager.java
). حدِّد موقع الطريقة المسماةsubscribeFcmRegistrationTokensToTopic
. سيتم تنفيذ طلب واجهة برمجة تطبيقاتsubscribeToTopic
هنا.
- لنشترك مثيل التطبيق في موضوع "Energy" (الطاقة). لإجراء ذلك، عليك أولاً توفير بيانات للحقلَين التاليَين:
registrationTokens
: قائمة مفصولة بفواصل من السلاسل تمثّل الرموز المميّزة للتسجيل في خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" التي تريد إنشاء اشتراكات مواضيع لها.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- تهانينا
تهانينا، لقد استخدمت مواضيع "المراسلة عبر السحابة الإلكترونية من Firebase" بنجاح لإرسال رسائل البث المتعدد إلى المجموعات الفرعية من نسخ تطبيقك. سيساعد ذلك في تبسيط قدرتك على الوصول إلى المستخدمين في الوقت المناسب من خلال محتوى ملائم.
ما هي الخطوات التالية؟
الآن بعد أن أكملت الدرس التطبيقي حول الترميز، ننصحك بتجربة مواضيع مختلفة على منصات أخرى باستخدام الأدلة التالية:
- مواضيع "المراسلة عبر السحابة الإلكترونية من Firebase" لنظام التشغيل iOS
- مواضيع "المراسلة عبر السحابة الإلكترونية من Firebase" للويب