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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

1 المقدمة

الأهداف

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

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

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

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

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

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

تم تحسين الإرسال المتعدد المستند إلى الموضوعات للإنتاجية.

ماذا ستتعلم

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

ما ستبنيه

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

ماذا ستحتاج

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

  1. في Firebase Console ، حدد إعدادات المشروع في الجزء العلوي من شريط التنقل الأيسر في الإعدادات ، وانقر فوق رمز 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 Console ، اتبع التعليمات لتنزيل ملف التهيئة 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 خفيف الوزن مع الحد الأدنى من الوظائف وواجهة المستخدم.
  • تمت إضافة تبعية لـ firebase-messaging SDK إلى ملف 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
    • ستكون هذه الفئة هي أول فئة يتم إنشاء مثيل لها عند بدء تشغيل التطبيق.
    • في StockNewsApplication لفئة onCreate ، تتم إضافة استدعاء إنشاء رمز تسجيل 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: subscribeFcmRegistrationTokensToTopic رمز (رموز) تسجيل FCM في موضوع FCM.
      • unsubscribeFcmRegistrationTokensFromTopic : إلغاء الاشتراك في رمز (رموز) تسجيل FCM من موضوع FCM.

إعداد كود الخادم

  1. أولاً ، نحتاج إلى إعداد حساب خدمة Firebase الذي يسمح لـ firebase-admin SDK بتفويض المكالمات إلى واجهات برمجة تطبيقات FCM.
    1. انتقل إلى Firebase Console ، وانقر على رمز الترس بجوار نظرة عامة على المشروع في شريط التنقل الأيمن ، وحدد إعدادات المشروع . 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 وأدخل رمز registrationToken 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 Adapter لربط onBindViewHolder بفئة الأسهم المناسبة.

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

  1. في طريقة subscribeToStockCategory ، ستقوم بتنفيذ استدعاء subscribeToTopic API الخاص بكائن 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.

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

  • &&: منطقي AND. على سبيل المثال ، '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. RegisterTokens: قائمة سلاسل مفصولة بفواصل تمثل رموز 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

ماذا بعد؟

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

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