أول رسالة دفع متعددة البث باستخدام موضوعات FCM

1 المقدمة

الأهداف

ستتعلم في هذا الدرس التطبيقي حول التعليمات البرمجية كيفية استخدام تطبيقك متعدد الأنظمة الأساسية بحيث يمكنك بث رسائل الدفع بشكل متعدد إلى مجموعات فرعية متنوعة من مثيلات تطبيقك باستخدام موضوعات FCM.

بمجرد الانتهاء، سوف تكون قادرًا على الاستفادة من البنية التحتية لـ FCM لإدارة هذه المجموعات الفرعية بالإضافة إلى رسائل الدفع المتعددة البث عبر المجموعات الفرعية.

نظرة عامة على المواضيع

المواضيع هي طريقة مدعومة من البنية التحتية لـ FCM للوصول إلى مجموعات فرعية من مثيلات تطبيقك من خلال الرسائل.

توفر FCM واجهات برمجة التطبيقات لإرسال الرسائل وكذلك الحفاظ على الاشتراكات في هذه المواضيع. يُطلق على عملية ربط وفصل مثيل التطبيق بالموضوع اسم الاشتراك وإلغاء الاشتراك على التوالي

يجب استخدام المواضيع للمحتوى المتاح للعامة. على سبيل المثال، رسائل حول تحديثات الطقس. إذا كنت تريد إرسال رسائل حساسة للمستخدم، فاستخدم Firebase Admin SDK للبث المتعدد للرسائل عبر أجهزة متعددة .

تم تحسين البث المتعدد القائم على المواضيع من أجل الإنتاجية.

ما ستتعلمه

  • كيفية الاشتراك (وإلغاء الاشتراك) للمستخدمين في المواضيع من تطبيق الهاتف المحمول.
  • كيفية إرسال رسائل دفع متعددة البث باستخدام المواضيع.
  • كيفية إرسال رسائل إلى مجموعة من المواضيع باستخدام شروط الموضوع.
  • كيفية إدارة اشتراكات المواضيع على جانب الخادم والقيام بالاشتراكات المجمعة وإلغاء الاشتراكات.

ما سوف تبنيه

  • تطبيق Android يقوم بالاشتراك/إلغاء الاشتراك في المواضيع ويستقبل الرسائل عند إرسالها إلى المواضيع.
  • تكامل من جانب الخادم باستخدام Firebase Admin SDK، والذي سيتم استخدامه لإرسال رسائل الموضوع عبر واجهات برمجة تطبيقات FCM.

ماذا ستحتاج

  • متصفح من اختيارك، مثل Chrome.
  • IntelliJ IDEA IDE لتطوير تطبيقات جافا.
    • تأكد من الاشتراك في دعم Gradle أثناء التثبيت.
  • Android Studio IDE لتطوير تطبيقات الأندرويد.
  • جهاز لتشغيل تطبيق الاندرويد. أيا من:
    • محاكي الاندرويد. (يتطلب الإعداد في Android Studio ).
    • جهاز 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

  1. في وحدة تحكم Firebase ، انقر فوق "إضافة مشروع" ، وقم بتسمية مشروع Firebase StockNews ، ثم انقر فوق "متابعة". ملاحظة: تذكر معرف المشروع لمشروع Firebase الخاص بك (أو انقر فوق أيقونة التحرير لتعيين معرف المشروع المفضل لديك).

fc08f9a7808e4553.png

  1. يمكنك تخطي تمكين Google Analytics. ولأغراض هذا الدرس التطبيقي حول الترميز، لن تحتاج إليه. انقر فوق متابعة.
  2. انقر فوق إنشاء مشروع .

تهانينا! لقد قمت للتو بإنشاء مشروع Firebase الخاص بك. الآن، يمكنك النقر على اسم المشروع للدخول إلى وحدة التحكم.

3. تكوين تطبيق Firebase الخاص بالنظام الأساسي

معظم تغييرات التعليمات البرمجية المطلوبة لتمكين دعم Firebase تم التحقق منها بالفعل في المشروع الذي تعمل عليه. ومع ذلك، لإضافة دعم لمنصات الأجهزة المحمولة، تحتاج إلى:

  • قم بتسجيل النظام الأساسي المطلوب في مشروع Firebase
  • قم بتنزيل ملف التكوين الخاص بالمنصة، وأضفه إلى الكود.

لأغراض هذا الدرس التطبيقي حول التعليمات البرمجية، سنقوم بإضافة تطبيق Android Firebase.

84e0b3199bef6d8a.png تكوين أندرويد

  1. في وحدة تحكم Firebase ، حدد إعدادات المشروع في الجزء العلوي من شريط التنقل الأيسر في ترس الإعدادات، وانقر فوق أيقونة Android ضمن تطبيقاتك في الصفحة العامة .

يجب أن تشاهد مربع الحوار التالي: 8254fc299e82f528.png

  1. القيمة المهمة التي يجب توفيرها هي اسم حزمة Android . اضبطه على com.ticker.stocknews .
    1. يجب أن يكون اسم الحزمة المقدم هنا هو نفس الاسم المقدم في AndroidManifest.xml الخاص بكود StockNewsApp المبدئي. إذا كنت ترغب في تحديد موقعه أو تغييره، فاتبع الخطوات التالية:
      1. في دليل StockNewsApp ، افتح الملف app/src/main/AndroidManifest.xml .
      2. في عنصر manifest ، ابحث عن قيمة السلسلة لسمة package . هذه القيمة هي اسم حزمة Android.
  1. في مربع حوار Firebase، الصق اسم الحزمة المنسوخة في حقل اسم حزمة Android .
  2. لا تحتاج إلى شهادة توقيع تصحيح الأخطاء SHA-1 لهذا الدرس التطبيقي حول التعليمات البرمجية، لأنه لن يتم إصدار هذا التطبيق. اترك هذا فارغا.
  3. انقر فوق تسجيل التطبيق .
  4. للاستمرار في وحدة تحكم Firebase، اتبع الإرشادات لتنزيل ملف التكوين google-services.json .
  5. يمكنك تخطي خطوات الإعداد المتبقية، حيث تم تكوين كل شيء آخر بالفعل في رمز التطبيق المبدئي. ستجد تطبيقك مدرجًا في الصفحة الرئيسية لـ Firebase Console.
  6. انسخ ملف google-services.json (الذي قمت بتنزيله للتو) إلى دليل messaging/fcm-topics-codelab/starter/StockNewsApp/app .

4. قم ببناء التطبيق الخاص بك وتشغيله

أنت جاهز لبدء العمل فعليًا على تطبيقك! أولاً، قم ببناء التطبيق وتشغيله.

قم باستيراد تطبيق البداية

ابدأ تشغيل Android Studio، وقم باستيراد messaging/fcm-topics-codelab/starter/StockNewsApp من دليل التعليمات البرمجية المبدئي.

بعد تحميل المشروع، قد ترى أيضًا تنبيهًا بأن Git لا يتتبع جميع تغييراتك المحلية، يمكنك النقر فوق " تجاهل " أو " X " في الجزء العلوي الأيمن. (لن تقوم بدفع أي تغييرات مرة أخرى إلى Git repo.)

في الزاوية العلوية اليسرى من نافذة المشروع، يجب أن ترى شيئًا مثل الصورة أدناه إذا كنت في عرض Android . (إذا كنت في عرض المشروع ، فستحتاج إلى توسيع المشروع لرؤية نفس الشيء)

b574ea0089ee87c6.png

يرجى ملاحظة أن Android Studio قد يستغرق عدة ثوانٍ لتجميع المشروع في الخلفية لأول مرة. خلال هذا الوقت، سترى قرصًا دوارًا في شريط الحالة أسفل Android Studio:

4bc64eb3b99eb0ae.png

نوصي بالانتظار حتى انتهاء ذلك قبل إجراء تغييرات على التعليمات البرمجية. سيسمح هذا لـ Android Studio بسحب جميع المكونات الضرورية.

بالإضافة إلى ذلك، إذا تلقيت رسالة مطالبة "هل تريد إعادة التحميل حتى تدخل تغييرات اللغة حيز التنفيذ؟" أو شيء من هذا القبيل، حدد "نعم".

إعداد المحاكي

إذا كنت بحاجة إلى مساعدة في إعداد محاكي Android، فراجع مقالة تشغيل تطبيقك .

فهم رمز بدء تطبيق Android

  • رمز البداية هو تطبيق Android خفيف الوزن مع الحد الأدنى من الوظائف وواجهة المستخدم.
  • تمت إضافة تبعية SDK لرسائل Firebase بالفعل إلى ملف app/build.gradle .

f04ff8f48d186dff.png

  • في AndroidManifest.xml ، تمت إضافة معالج رد الاتصال MESSAGING_EVENT بالفعل.
    • يقوم هذا المعالج، StockNewsMessagingService.java ، بتوسيع فئة FirebaseMessagingService التي توفر العديد من الوظائف ذات الصلة بـ Firebase Cloud Messaging. راجع وثائق FirebaseMessagingService لمعرفة المزيد. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • يتم استدعاء وظيفة onNewToken عند إنشاء رمز تسجيل FCM أو تحديثه. راجع مراقبة إنشاء الرمز المميز لمزيد من المعلومات.
    • يتم استدعاء الدالة onMessageReceived عند تلقي رسالة ويكون التطبيق في المقدمة. حاليًا، يقوم ببساطة بتسجيل الرسالة المستلمة.
  • أيضًا، في AndroidManifest.xml ، يتم توفير فئة Application Android أيضًا باسم StockNewsApplication . a4982a8731492dfc.pngccde692f7f68dc5a.png
    • سيكون هذا الفصل هو الأول الذي سيتم إنشاء مثيل له عند بدء تشغيل التطبيق.
    • في وظيفة onCreate الخاصة بفئة StockNewsApplication ، تتم إضافة استدعاء إنشاء رمز تسجيل FCM. سيقوم بإنشاء رمز تسجيل FCM صالح وتسجيله.
  • يضيف MainActivity.java RecyclerView الذي يعرض اختيارات فئة المخزون.
  • يقوم SubscriptionAdapter.java بتنفيذ RecyclerView.Adapter الذي يرسم شاشة اختيار فئة المخزون.
    • كل فئة من فئات الأسهم لها اسم وتبديل الاشتراك بجوارها.
    • يجب أن يؤدي تغيير التبديل إلى إجراء مكالمة اشتراك/إلغاء اشتراك في موضوع FCM.
    • سوف تقوم بتنفيذ هذه المكالمات في الأقسام القادمة.
  • تحتوي فئة model/StockCategories.java على قائمة بجميع فئات الأسهم وأسماء المواضيع المرتبطة بها.

b32663ec4e865a18.png

قم بتشغيل تطبيق البداية

  1. قم بتوصيل جهاز Android الخاص بك بالكمبيوتر أو قم بتشغيل المحاكي.
  2. في شريط الأدوات العلوي، حدد جهاز Android أو المحاكي المستهدف واضغط على زر التشغيل.

5b27fc5b237e06b9.png

  1. ستبدو واجهة مستخدم التطبيق كما يلي:

ff5b1a1c53231c54.png

  1. سيقوم التطبيق بإنشاء رمز تسجيل FCM وتسجيله. ومع ذلك، لن يتغير شيء في واجهة مستخدم التطبيق.
    1. انسخ واحفظ رمز تسجيل FCM حيث سيتم استخدامه في الخطوات التالية.

927eb66bc909f36b.png

5. أرسل رسالة اختبارية

أنت الآن جاهز لإرسال رسالة اختبار إلى مثيل التطبيق الذي قمت بإعداده في الخطوة الأخيرة.

قم باستيراد رمز خادم البداية

ابدأ تشغيل IntelliJ IDEA وافتح مشروع messaging/fcm-topics-codelab/starter/StockNewsServer .

يجب أن يبدو عرض المشروع في شريط التنقل الأيسر كما يلي:

da20711f6527dff6.png

لاحظ أن IntellIj IDEA قد يستغرق بضع دقائق لبناء مشروعك، بما في ذلك سحب التبعيات المطلوبة.

فهم رمز بداية الخادم

  • رمز بدء الخادم هو مشروع Java يستند إلى Gradle.
  • يحتوي ملف build.gradle بالفعل على التبعية على Firebase-admin SDK المضافة إليه. يوفر SDK هذا إمكانية الوصول إلى وظائف إرسال رسائل FCM المتنوعة.

650fc733298588f8.png

  • وأخيرًا، هناك فئتان، أي:
    • FcmSender.java : تحتوي هذه الفئة على الطرق التالية للملاحظة:
      • initFirebaseSDK : تهيئة Firebase-admin SDK.
      • sendMessageToFcmRegistrationToken : أرسل رسالة إلى رمز تسجيل FCM.
      • sendMessageToFcmTopic : إرسال رسالة إلى موضوع FCM.
      • sendMessageToFcmTopicCondition : إرسال رسالة إلى حالة موضوع FCM.
    • FcmSubscriptionManager.java : تحتوي هذه الفئة على أساليب تسمح بإدارة اشتراكات المواضيع من جانب الخادم.
      • initFirebaseSDK : تهيئة Firebase-admin SDK.
      • subscribeFcmRegistrationTokensToTopic : اشترك في رمز (رموز) تسجيل FCM في موضوع FCM.
      • unsubscribeFcmRegistrationTokensFromTopic : إلغاء الاشتراك في رمز (رموز) تسجيل FCM من موضوع FCM.

إعداد رمز الخادم

  1. أولاً، نحتاج إلى إعداد حساب خدمة Firebase الذي يسمح لـ Firebase-admin SDK بتفويض المكالمات إلى واجهات برمجة تطبيقات FCM.
    1. انتقل إلى Firebase Console، وانقر على أيقونة الترس بجوار Project Overview في شريط التنقل الأيسر، ثم حدد Project settings . 8c2108d4d7c915e9.png
    2. في صفحة الإعدادات، حدد حسابات الخدمة ، ثم انقر فوق إنشاء حساب خدمة . 84b128cc5dac0a85.png
    3. انقر الآن على زر إنشاء مفتاح خاص جديد وسيبدأ التنزيل التلقائي لملف المفتاح الخاص بك.
    4. أعد تسمية ملف المفتاح إلى service-account.json وانسخه في مجلد messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources .
    5. يقوم كل من FcmSender.java و FcmSubscriptionManager.java بتحميل ملف service-account.json من classpath باستخدام التعليمة البرمجية التالية. 8dffbee658e0bdd.png
  2. في هذه المرحلة، رمز الخادم جاهز. قم بتشغيل Build -> Build Project من شريط القائمة العلوي.

إرسال رسالة اختبار

  1. في FcmSender.java ، حدد موقع وظيفة sendMessageToFcmRegistrationToken وأدخل رمز تسجيل FCM المميز الذي نسخته من قسم تشغيل تطبيق البداية في حقل registrationToken .
  2. في الوظيفة main ، قم بإلغاء التعليق على وظيفة sendMessageToFcmRegistrationToken فقط وانقر فوق "تشغيل" لتنفيذ التعليمات البرمجية.
    1. لاحظ كيفية تعيين رمز تسجيل FCM في حقل Token لكائن message .
    2. علاوة على ذلك، لاحظ كيف استخدمنا واجهة برمجة تطبيقات send لواجهة FirebaseMessaging .

52e4a3ec3f816473.png

  1. من المفترض أن يرسل هذا رسالة إلى مثيل التطبيق الذي قمت بإعداده في الخطوة السابقة.
  2. عندما يكون مثيل التطبيق في المقدمة، يجب أن تشاهد محتوى الرسالة المسجلة.

d3540ec1089f97dd.png

  1. وعندما يكون مثيل التطبيق في الخلفية، ستلاحظ ظهور الرسالة في علبة الإشعارات.

31203deca59c03fe.png

رائع، لقد استخدمت Firebase Admin SDK لإرسال رسائل إلى مثيل التطبيق. اقرأ المزيد حول استخدام Firebase Admin SDK في خادمك .

6. تنفيذ موضوع الاشتراك / إلغاء الاشتراك

في هذه الخطوة، ستقوم بتنفيذ إجراءات الاشتراك وإلغاء الاشتراك في الموضوع، من خلال تبديل فئة المخزون في تطبيق Android.

عندما يقوم مستخدم التطبيق بتبديل المفتاح لفئة سهم معينة، سيتم إجراء اشتراك في الموضوع أو مكالمة إلغاء الاشتراك.

مراجعة الكود

  • انتقل إلى فئة SubscriptionAdapter.java في كود تطبيق Android وحدد موقع فئة RecyclerViewViewHolder .

6c0614199e684f6.png

  • يقوم مُنشئ الفصل بإعداد مستمع لتبديل الاشتراك باستخدام setOnCheckedChangeListener .
  • اعتمادًا على مفتاح التبديل، يتم تنفيذ إجراءات الاشتراك وإلغاء الاشتراك عن طريق استدعاء أساليب subscribeToStockCategory و unsubscribeFromStockCategory على التوالي.
  • يتم استدعاء طريقة setData بواسطة onBindViewHolder الخاص بمحول RecyclerView لربط ViewHolder بفئة المخزون المناسبة.

تنفيذ الاشتراك الموضوع

  1. في طريقة 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();
          });
    }

تنفيذ إلغاء الاشتراك في الموضوع

  1. وبالمثل، في حالة else، ستنفذ استدعاء unsubscribeFromTopic API. شيء على غرار ما يلي:
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();
          });
    }

دعونا نجربها

  1. قم بتشغيل التطبيق وتبديل خيارات فئة الأسهم لتنفيذ إجراءات الاشتراك وإلغاء الاشتراك. سيبدو شيء هكذا:

يشترك

إلغاء الاشتراك

7. إرسال رسالتك الأولى حول الموضوع

في هذه الخطوة، ستقوم بتنفيذ تعليمات برمجية من جانب الخادم لإرسال رسالة موضوع FCM.

تنفيذ التكامل من جانب الخادم لإرسال رسالة الموضوع

  1. في رمز الخادم، انتقل إلى FcmSender.java وحدد موقع الطريقة المسماة sendMessageToFcmTopic .

56381dd1b40cde9c.png

  1. في السطر الأول، قم بتوفير موضوع FCM الذي تريد إرسال الرسالة إليه.
    • وهي عبارة عن سلسلة من النموذج: /topics/<Topic Name> . على سبيل المثال، /topics/Technology .
  2. في الأسطر التالية، قم بإنشاء كائن 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();
  1. أضف الآن استدعاء إلى مثيل FirebaseMessaging لإرسال الرسالة (مماثل لاستدعاء الإرسال الذي تم إجراؤه في وظيفة sendMessageToFcmRegistrationToken ).
FirebaseMessaging.getInstance().send(message);
  1. أخيرًا، قم بتحديث الوظيفة main وتمكين الاتصال بوظيفة sendMessageToFcmTopic فقط.

9a6aa08dd7c28898.png

إرسال الرسالة والتحقق من صحة الاستلام

  1. قبل إرسال رسالة الموضوع، تأكد أولاً من أن مثيل تطبيقك مشترك في الموضوع الذي تريد الإرسال إليه.
    1. يمكن القيام بذلك عن طريق تحريك مفتاح التبديل المقابل. على سبيل المثال:
    4668247408377712.png
  2. يمكنك الآن إرسال رسالة الموضوع الخاص بك عن طريق تنفيذ الوظيفة main لـ FcmSender.java .
  3. كما كان من قبل، يجب أن تكون قادرًا على ملاحظة إيصال الرسالة على مثيل التطبيق.
    1. مثيل التطبيق في المقدمة
    c144721399f610fe.png
    1. مثيل التطبيق في الخلفية
    44efc7dfd57e8e9a.png
  4. المكافأة: حاول إلغاء الاشتراك في الموضوع الذي أرسلته إليه وأعد إرسال الرسالة. ستلاحظ أنه لا يتم تسليم الرسالة إلى مثيل التطبيق.

8. إرسال أول رسالة خاصة بحالة الموضوع

تسمح لك ميزة حالة الموضوع بإرسال رسائل إلى مجموعة من المواضيع مما يتيح لك تقديم تعريف أكثر تعبيرًا للجمهور.

على سبيل المثال، في تطبيق StockNews الخاص بنا، فكر في إمكانية إرسال رسائل إلى مجموعة من مثيلات التطبيق المشتركة في موضوعات التكنولوجيا أو السيارات. قد تحدث مثل هذه الحالة، على سبيل المثال، إذا كان هناك حدث جدير بالملاحظة يتعلق بـ Waymo.

تسمح لك المواضيع بالتعبير عن مجموعتك في شكل تعبير منطقي باستخدام عوامل التشغيل التالية

  • && : منطقية و. على سبيل المثال، 'Technology' in topics && 'Automotive' in topics - يستهدف فقط مثيلات التطبيق المشتركة في كل من موضوعات التكنولوجيا والسيارات.
  • || : منطقية أو. على سبيل المثال، 'Technology' in topics || 'Automotive' in topics - يستهدف مثيلات التطبيق المشتركة في موضوعات التكنولوجيا أو السيارات.
  • () : أقواس للتجميع. على سبيل المثال، 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) - يستهدف فقط مثيلات التطبيق المشتركة في التكنولوجيا وإما موضوعات السيارات أو الطاقة.

اقرأ المزيد حول كيفية إنشاء طلبات إرسال لاستخدام هذه الوظيفة.

تنفيذ التكامل من جانب الخادم لإرسال رسالة حالة الموضوع

  1. ارجع إلى رمز الخادم، وانتقل إلى FcmSender.java وحدد موقع الطريقة المسماة sendMessageToFcmTopicCondition .

3719a86c274522cf.png

  1. في السطر الأول، بالنسبة للمتغير topicCondition ، قم بتوفير حالة الموضوع الذي تريد إرسال الرسالة إليه. يمكنك ضبطه على: 'Technology' in topics && 'Automotive' in topics .
  2. في الأسطر التالية، قم بإنشاء كائن message جديد (مشابه للكائن المحدد في الدالة sendMessageToFcmTopic ).
    1. سيكون الفرق هو أنه بدلاً من تعيين حقل 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();
  1. أضف الآن الاستدعاء إلى مثيل FirebaseMessaging لإرسال الرسالة (مماثل لاستدعاء الإرسال الذي تم إجراؤه في الدالة sendMessageToFcmTopic ).
FirebaseMessaging.getInstance().send(message);
  1. أخيرًا، قم بتحديث الوظيفة main وتمكين الاتصال بوظيفة sendMessageToFcmTopicCondition فقط.

db9588d40d2a0da6.png

إرسال الرسالة والتحقق من صحة الاستلام

  1. قبل إرسال رسالة الموضوع، تأكد أولاً من أن مثيل التطبيق الخاص بك يلبي شرط الموضوع المحدد عن طريق اشتراك مثيل التطبيق في كل من موضوعات التكنولوجيا والسيارات.
  2. يمكنك الآن إرسال رسالة الموضوع الخاص بك عن طريق تنفيذ الوظيفة main لـ FcmSender.java .
  3. كما كان من قبل، يجب أن تكون قادرًا على ملاحظة استلام الرسالة على مثيل التطبيق.
    1. مثيل التطبيق في المقدمة
    6f612ace15aa6515.png
    1. مثيل التطبيق في الخلفية
    78044a56ac2359cb.png
  4. المكافأة: يمكنك الآن إلغاء الاشتراك في موضوع التكنولوجيا وإعادة إرسال رسالة حالة الموضوع. يجب أن تلاحظ أن الرسالة لم يتم تلقيها بواسطة مثيل التطبيق.

9. خلاصة

دعنا نلخص سريعًا ما تعلمته حتى هذه اللحظة.

  • كيفية بدء الاشتراك في الموضوع/إلغاء الاشتراك من مثيل التطبيق.
  • إرسال رسالة إلى الموضوع والتحقق من الاستلام على مثيلات التطبيق المشترك.
  • إرسال رسالة إلى حالة الموضوع والتحقق من الاستلام على مثيل التطبيق الذي يلبي الشرط.

في القسم التالي، ستتعرف على كيفية الاشتراك/إلغاء الاشتراك في مثيلات التطبيق في المواضيع دون الحاجة إلى إنشاء مكالمات من جانب العميل.

c0dc20655d392690.gif

10. إدارة اشتراكات المواضيع من جانب الخادم

حتى الآن، في هذا الدرس التطبيقي حول التعليمات البرمجية، يتم بدء جميع اشتراكات الموضوع واستدعاءات إلغاء الاشتراك من مثيل التطبيق.

ومع ذلك، في بعض حالات الاستخدام، قد ترغب في إدارة اشتراكات المواضيع من جانب الخادم. على سبيل المثال، قد ترغب في الاشتراك في مجموعة فرعية من قاعدة المستخدمين الحالية لديك في موضوع جديد دون انتظار طرح التطبيق.

في هذا القسم، ستتعلم كيفية استخدام Firebase Admin SDK للاشتراك وإلغاء الاشتراك في مجموعة من رموز تسجيل FCM المميزة لموضوع ما عن طريق إجراء مكالمات من جانب الخادم.

تنفيذ الاشتراك من جانب الخادم لرموز تسجيل FCM لموضوع FCM

  1. في رمز الخادم، انتقل إلى فئة FcmSubscriptionManager.java . حدد موقع الطريقة المسماة subscribeFcmRegistrationTokensToTopic . سوف تقوم بتنفيذ الدعوة ل subscribeToTopic API هنا.

5d5709e7b3cbcb04.png

  1. دعونا نشترك في مثيل التطبيق في موضوع الطاقة. للقيام بذلك، قم أولاً بتوفير البيانات الخاصة بالحقلين التاليين:
    1. registrationTokens : قائمة سلاسل مفصولة بفواصل تمثل رموز تسجيل FCM التي ترغب في إنشاء اشتراكات موضوعية لها.
    2. topicName : اسم الموضوع الخاص بموضوع الطاقة، أي /topics/Energy .
  2. في السطور القليلة القادمة تنفيذ الدعوة، على النحو التالي:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. يمكنك فحص TopicManagementResponse للحصول على بعض إحصائيات النتائج عالية المستوى. مثل طباعة عدد اشتراكات المواضيع التي تم إنشاؤها بنجاح باستخدام getSuccessCount .
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. أخيرًا، في الوظيفة main ، قم بتمكين المكالمات إلى وظيفة subscribeFcmRegistrationTokensToTopic فقط.

إنشاء الاشتراك وإرسال رسالة الموضوع

  1. في هذه المرحلة، أنت جاهز لإنشاء اشتراك الموضوع وإرسال رسالة إليه.
  2. تنفيذ الوظيفة main لفئة FcmSubscriptionManager.java . سيؤدي هذا إلى إنشاء اشتراك في الموضوع.
  3. الآن، قم بإعداد الرمز لإرسال الرسالة. مماثلة لما قبل،
    1. في FcmSender.java ، حدد موقع وظيفة sendMessageToFcmTopic .
    2. اضبط topicName على موضوع الطاقة، أي /topics/Energy .
    3. قم بإنشاء كائن Message وتوجيهه إلى الموضوع باستخدام setTopic .
    4. أخيرًا، قم بتحديث الطريقة main لتمكين وظيفة sendMessageToFcmTopic فقط.
  4. قم بتنفيذ الوظيفة main لـ FcmSender.java . سيؤدي هذا إلى إرسال الرسالة إلى مثيل تطبيقك ويمكنك ملاحظتها في تطبيقك على النحو التالي.
    1. مثيل التطبيق في المقدمة
    40ab6cf71e0e4116.png
    1. مثيل التطبيق في الخلفية
    8fba81037198209e.png

تنفيذ إلغاء الاشتراك من جانب الخادم لرموز تسجيل FCM لموضوع FCM

  1. بالنسبة لإلغاء الاشتراكات في المواضيع من جانب الخادم، استخدم واجهة برمجة تطبيقات unsubscribeFromTopic هذه. ستضيف الكود ذي الصلة إلى وظيفة unsubscribeFcmRegistrationTokensFromTopic لفئة FcmSubscriptionManager.java .

8d9e8ea9d34016bd.png

  1. يتم ترك تنفيذ رمز إلغاء الاشتراك من جانب الخادم والتحقق من تأثيره عن طريق إرسال رسالة موضوع كتمرين لك.

11. تهانينا

تهانينا، لقد نجحت في استخدام موضوعات FCM لإرسال رسائل البث المتعدد إلى مجموعات فرعية من مثيلات تطبيقك. سيساعد هذا في تبسيط قدرتك على الوصول إلى المستخدمين في الوقت المناسب بالمحتوى ذي الصلة.

947def3eb33b1e4a.gif

ماذا بعد؟

الآن بعد أن أكملت الدرس التطبيقي حول التعليمات البرمجية، فكر في تجربة موضوعات لمنصات أخرى باستخدام الأدلة التالية:

المستندات المرجعية