הודעת הדחיפה הראשונה שלך ב-Multicast באמצעות נושאי FCM

1. מבוא

מטרות עסקיות

ב-codelab הזה תלמדו איך להטמיע באפליקציה מרובת הפלטפורמות שלכם את האפשרות לשלוח הודעות פוש לשידור לקבוצות משנה שונות של מופעי האפליקציה באמצעות נושאים ב-FCM.

אחרי שתסיימו, תוכלו להשתמש בתשתית של FCM כדי לנהל את קבוצות המשנה האלה וגם לשלוח הודעות פוש מרובות נמענים לקבוצות המשנה.

סקירה כללית של נושאים

נושאים הם דרך נתמכת להגיע לקבוצות משנה של מופעי האפליקציה עם הודעות, באמצעות תשתית FCM.

‫FCM מספק את ממשקי ה-API לשליחת הודעות ולניהול המינויים לנושאים האלה. הפעולה של שיוך מופע של אפליקציה לנושא נקראת הרשמה, והפעולה של ביטול השיוך נקראת ביטול הרשמה.

צריך להשתמש בנושאים לתוכן שזמין לכולם. לדוגמה, הודעות על עדכוני מזג אוויר. אם רוצים לשלוח הודעות עם מידע רגיש על משתמשים, צריך להשתמש ב-Firebase Admin SDK כדי לשלוח הודעות למספר מכשירים.

השימוש בשיטת המולטיקאסט לפי נושאים מותאם להעברת נתונים מהירה.

מה תלמדו

  • איך מצרפים (ומסירים) משתמשים לנושאים מאפליקציה לנייד.
  • איך שולחים הודעות פוש לשידור לקבוצה באמצעות נושאים.
  • איך שולחים הודעות לשילוב של נושאים באמצעות תנאי נושא.
  • איך לנהל מינויים לנושאים בצד השרת ולבצע מינויים וביטולים של מינויים בכמות גדולה.

מה תפַתחו

  • אפליקציית Android שנרשמת לנושאים או מבטלת את ההרשמה אליהם, ומקבלת הודעות שנשלחות לנושאים.
  • שילוב בצד השרת באמצעות Firebase Admin SDK, שישמש לשליחת הודעות בנושאים דרך ממשקי API של FCM.

מה צריך

  • דפדפן לבחירתכם, כמו Chrome.
  • סביבת הפיתוח המשולבת IntelliJ IDEA לפיתוח אפליקציות Java.
    • חשוב להביע הסכמה לתמיכה ב-Gradle במהלך ההתקנה.
  • Android Studio: סביבת פיתוח משולבת (IDE) לפיתוח אפליקציות ל-Android.
  • מכשיר להפעלת אפליקציית 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

אפליקציית המתחילים של ה-codelab הזה נמצאת בספרייה messaging של הענף fcm-topics-codelab. כדי להגיע לקוד ההתחלתי, מבצעים את השלבים הבאים. היא מכילה שתי ספריות: StockNewsApp ו-StockNewsServer. הראשון מכיל את אפליקציית Android Starter והשני מכיל את קוד ה-Starter בצד השרת.

git checkout fcm-topics-codelab
cd messaging/fcm-topics-codelab/starter

הגרסה המלאה של ה-codelab הזה נמצאת בספרייה messaging/fcm-topics-codelab/completed.

יצירת פרויקט Firebase

  1. נכנסים למסוף Firebase באמצעות חשבון Google.
  2. לוחצים על הלחצן כדי ליצור פרויקט חדש, ואז מזינים שם לפרויקט (לדוגמה, StockNews).
  3. לוחצים על המשך.
  4. אם מוצגת בקשה לעשות זאת, קוראים ומאשרים את התנאים של Firebase, ואז לוחצים על המשך.
  5. (אופציונלי) מפעילים את העזרה מבוססת-AI במסוף Firebase (שנקראת Gemini ב-Firebase).
  6. ב-codelab הזה לא צריך להשתמש ב-Google Analytics, ולכן משביתים את האפשרות Google Analytics.
  7. לוחצים על יצירת פרויקט, מחכים שהפרויקט יוקצה ולוחצים על המשך.

כל הכבוד! זהו, יצרתם את פרויקט Firebase.

3. הגדרת אפליקציית Firebase ספציפית לפלטפורמה

רוב השינויים בקוד שנדרשים כדי להפעיל תמיכה ב-Firebase כבר נבדקו בפרויקט שאתם עובדים עליו. עם זאת, כדי להוסיף תמיכה בפלטפורמות לנייד, צריך:

  • רישום הפלטפורמה הרצויה בפרויקט Firebase
  • מורידים את קובץ ההגדרות שספציפי לפלטפורמה ומוסיפים אותו לקוד.

לצורך ה-codelab הזה, אנחנו נוסיף אפליקציית Android Firebase.

84e0b3199bef6d8a.pngהגדרת Android

  1. ב-Firebase Console, בוחרים באפשרות Project Settings (הגדרות הפרויקט) בחלק העליון של סרגל הניווט הימני (סמל גלגל השיניים של ההגדרות), ולוחצים על סמל Android בקטע Your apps (האפליקציות שלך) בדף General (כללי).

תיבת הדו-שיח הבאה אמורה להופיע : 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 בשביל ה-codelab הזה, כי האפליקציה הזו לא תופץ. משאירים את השדה הזה ריק.
  3. לוחצים על Register App (רישום האפליקציה).
  4. ממשיכים במסוף Firebase ופועלים לפי ההוראות להורדת קובץ התצורה google-services.json.
  5. אתם יכולים לדלג על שאר שלבי ההגדרה, כי כל השאר כבר מוגדר בקוד של אפליקציית המתחילים. האפליקציה תופיע בדף הראשי של מסוף Firebase.
  6. מעתיקים את הקובץ google-services.json (שהורדתם עכשיו) לספרייה messaging/fcm-topics-codelab/starter/StockNewsApp/app.

4. איך יוצרים ומריצים את האפליקציה

עכשיו אפשר להתחיל לעבוד על האפליקציה! קודם כול, בונים את האפליקציה ומריצים אותה.

ייבוא אפליקציה לתחילת הדרך

מפעילים את Android Studio ומייבאים את messaging/fcm-topics-codelab/starter/StockNewsApp מהספרייה של קוד ההתחלה.

אחרי שהפרויקט נטען, יכול להיות שתוצג גם התראה שלפיה Git לא עוקב אחרי כל השינויים המקומיים. אפשר ללחוץ על התעלמות או על X בפינה השמאלית העליונה. (לא תהיה לכם אפשרות להעביר שינויים בחזרה למאגר Git).

בפינה הימנית העליונה של חלון הפרויקט, אמור להופיע משהו כמו בתמונה שלמטה אם אתם בתצוגה Android. (אם אתם בתצוגה Project, תצטרכו להרחיב את הפרויקט כדי לראות את אותו הדבר)

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 callback handler.
    • ה-handler הזה, StockNewsMessagingService.java, מרחיב את המחלקה FirebaseMessagingService, שמספקת פונקציונליות שקשורה להעברת הודעות בענן ב-Firebase. מידע נוסף זמין במאמרי העזרה בנושא FirebaseMessagingService. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • המערכת קוראת לפונקציה onNewToken כשאסימון הרישום של FCM נוצר או מתרענן. מידע נוסף זמין במאמר בנושא מעקב אחרי יצירת אסימונים.
    • הפונקציה onMessageReceived מופעלת כשמתקבלת הודעה והאפליקציה בחזית. בשלב הזה, ההודעה שהתקבלה פשוט מתועדת.
  • בנוסף, ב-AndroidManifest.xml, מסופק גם מחלקת Android Application בשם 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 Registration לנושא ב-FCM.

הגדרת קוד השרת

  1. קודם צריך להגדיר חשבון שירות ב-Firebase שיאפשר ל-Firebase Admin SDK לאשר קריאות ל-FCM API.
    1. נכנסים אל מסוף Firebase, לוחצים על סמל גלגל השיניים לצד Project Overview (סקירת הפרויקט) בסרגל הניווט שמימין, ובוחרים באפשרות Project settings (הגדרות הפרויקט). 8c2108d4d7c915e9.png
    2. בדף ההגדרות, בוחרים באפשרות חשבונות שירות ולוחצים על יצירת חשבון שירות. 84b128cc5dac0a85.png
    3. עכשיו לוחצים על הלחצן Generate new private key (יצירת מפתח פרטי חדש), והורדה אוטומטית של קובץ המפתח תתחיל.
    4. משנים את השם של קובץ המפתח ל-service-account.json ומעתיקים אותו לתיקייה messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources.
    5. הפקודות FcmSender.java ו-FcmSubscriptionManager.java טוענות את הקובץ service-account.json מנתיב המחלקה באמצעות הקוד הבא. 8dffbee658e0bdd.png
  2. בשלב הזה, קוד השרת מוכן. מריצים את הפקודה Build -> Build Project (בנייה -> בניית הפרויקט) מסרגל התפריטים העליון.

שליחת הודעת בדיקה

  1. ב-FcmSender.java מאתרים את הפונקציה sendMessageToFcmRegistrationToken ומוסיפים את טוקן הרישום של FCM שהעתקתם מהקטע הרצת אפליקציית המתחילים בשדה registrationToken.
  2. בפונקציה main, מבטלים את ההערה רק בפונקציה sendMessageToFcmRegistrationToken ולוחצים על 'הרצה' כדי להריץ את הקוד.
    1. שימו לב איך טוקן הרישום של FCM מוגדר בשדה Token של האובייקט message.
    2. בנוסף, שימו לב לשימוש ב-API‏ send של הממשק FirebaseMessaging.

52e4a3ec3f816473.png

  1. הפעולה הזו אמורה לשלוח הודעה למופע האפליקציה שהגדרתם בשלב הקודם.
  2. כשהמופע של האפליקציה נמצא בחזית, תוכן ההודעה אמור להופיע ביומן.

d3540ec1089f97dd.png

  1. וכשהמופע של האפליקציה פועל ברקע, ההודעה תופיע במגש ההתראות.

31203deca59c03fe.png

מעולה, השתמשת ב-Firebase Admin SDK כדי לשלוח הודעות למופע של אפליקציה. מידע נוסף על שימוש ב-Firebase Admin SDK בשרת

6. הטמעה של הרשמה לנושאים או ביטול הרשמה

בשלב הזה מטמיעים פעולות של הרשמה לנושא וביטול הרשמה לנושא, במתג Stock Category (קטגוריית מלאי) באפליקציית Android.

כשמשתמש באפליקציית App מחליף את המצב של המתג בקטגוריית מלאי מסוימת, מתבצעת קריאה להרשמה לנושא או לביטול ההרשמה לנושא.

קוד הביקורת

  • עוברים לכיתה SubscriptionAdapter.java בקוד של אפליקציית Android ומאתרים את הכיתה RecyclerViewViewHolder.

6c0614199e684f6.png

  • הבונה של המחלקה מגדיר מאזין למתג המינוי באמצעות setOnCheckedChangeListener.
  • בהתאם למתג, פעולות ההרשמה והביטול מתבצעות על ידי קריאה לשיטות subscribeToStockCategory ו-unsubscribeFromStockCategory בהתאמה.
  • השיטה setData נקראת על ידי onBindViewHolder של RecyclerView Adapter כדי לקשור את ViewHolder לקטגוריית המלאי המתאימה.

הטמעה של מינוי לנושא

  1. בשיטה subscribeToStockCategory, מטמיעים את הקריאה ל-API‏ 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, תטמיעו את הקריאה ל-API‏ 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();
          });
    }

רוצים לנסות?

  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, אפשר לשלוח הודעות לקבוצה של מופעי אפליקציה שנרשמו לנושאים Technology או Automotive. מקרה כזה יכול לקרות, למשל, אם יש אירוע משמעותי שקשור ל-Waymo.

התכונה 'נושאים' מאפשרת לכם להביע את השילוב שלכם בצורה של ביטוי בוליאני באמצעות האופרטורים הבאים

  • ‫&& : פעולת AND לוגית. לדוגמה, 'Technology' in topics && 'Automotive' in topics – המערכת מטרגטת רק את המופעים של האפליקציה שנרשמו לנושאים 'טכנולוגיה' ו'רכב'.
  • ‫|| : OR לוגי. לדוגמה, '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. לפני ששולחים את ההודעה בנושא, קודם מוודאים שמופע האפליקציה עומד בתנאי הנושא שצוין, על ידי הרשמת מופע האפליקציה לנושאים Technology ו-Automotive.
  2. עכשיו אפשר לשלוח את ההודעה לנושא על ידי הפעלת הפונקציה main של FcmSender.java.
  3. כמו קודם, אמורה להיות לכם אפשרות לראות את קבלת ההודעה במופע של האפליקציה.
    1. מופע של אפליקציה בחזית
    6f612ace15aa6515.png
    1. מופע של אפליקציה ברקע
    78044a56ac2359cb.png
  4. בונוס: עכשיו אפשר לבטל את ההרשמה לנושא 'טכנולוגיה' ולשלוח מחדש את ההודעה עם התנאי לנושא. אפשר לראות שההודעה לא מתקבלת במופע של האפליקציה.

9. תקציר

בואו נעשה סיכום קצר של מה שלמדתם עד עכשיו.

  • איך מתחילים או מפסיקים לקבל עדכונים בנושא מסוים ממופע של אפליקציה.
  • שליחת הודעה לנושא ואימות הקבלה במופעים של אפליקציות שנרשמו לנושא.
  • שליחת הודעה לתנאי של נושא ואימות הקבלה במופע של אפליקציה שעומד בתנאי.

בקטע הבא מוסבר איך אפשר להירשם לנושאים או לבטל את ההרשמה שלהם למופעים של אפליקציות בלי ליצור מופעים של קריאות מצד הלקוח.

c0dc20655d392690.gif

10. ניהול מינויים לנושאים בצד השרת

עד עכשיו, בכל קוד ה-Codelab הזה, כל הקריאות לרישום לנושאים ולביטול הרישום לנושאים מופעלות ממופע של אפליקציה.

עם זאת, בתרחישי שימוש מסוימים, יכול להיות שתרצו לנהל את המינויים לנושאים מצד השרת. לדוגמה, יכול להיות שתרצו לרשום קבוצת משנה של בסיס המשתמשים הקיים שלכם לנושא חדש בלי לחכות להשקת האפליקציה.

בקטע הזה נסביר איך להשתמש ב-Firebase Admin SDK כדי לרשום קבוצה של טוקנים של רישום ל-FCM לנושא מסוים ולבטל את הרישום שלהם. לשם כך, צריך לבצע קריאות מצד השרת.

הטמעה של הרשמה בצד השרת של טוקנים של FCM Registration לנושא ב-FCM

  1. בקוד השרת, עוברים אל FcmSubscriptionManager.java class. מאתרים את השיטה שנקראת subscribeFcmRegistrationTokensToTopic. כאן מטמיעים את הקריאה ל-API‏ subscribeToTopic.

5d5709e7b3cbcb04.png

  1. נרשום את מופע האפליקציה לנושא Energy. כדי לעשות זאת, קודם צריך לספק נתונים בשני השדות הבאים:
    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 Registration לנושא ב-FCM

  1. כדי לבטל הרשמה לנושאים בצד השרת, משתמשים ב-API‏ unsubscribeFromTopic. מוסיפים את הקוד הרלוונטי לפונקציה unsubscribeFcmRegistrationTokensFromTopic של המחלקה FcmSubscriptionManager.java.

8d9e8ea9d34016bd.png

  1. הטמעה של קוד לביטול הרשמה בצד השרת ואימות ההשפעה שלו על ידי שליחת הודעה בנושא מסוים נשארים כתרגיל בשבילכם.

11. מזל טוב

הצלחתם להשתמש בנושאים של FCM כדי לשלוח הודעות מרובות משתתפים לקבוצות משנה של מופעי האפליקציה. כך תוכלו להגיע למשתמשים בזמן עם תוכן רלוונטי.

947def3eb33b1e4a.gif

מה השלב הבא?

אחרי שסיימתם את ה-codelab, כדאי לנסות נושאים לפלטפורמות אחרות באמצעות המדריכים הבאים:

מסמכי עזר