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

1. הקדמה

מטרות

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

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

סקירת נושאים

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

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

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

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

מה תלמד

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

מה שתבנה

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

מה אתה צריך

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

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 Console , בחר הגדרות פרויקט בחלק העליון של סרגל הניווט השמאלי בגלגל השיניים של ההגדרות, ולחץ על סמל Android תחת האפליקציות שלך בדף כללי .

אתה אמור לראות את הדו-שיח הבא: 8254fc299e82f528.png

  1. הערך החשוב שיש לספק הוא שם החבילה של Android . הגדר אותו ל- com.ticker.stocknews .
    1. שם החבילה שסופק כאן חייב להיות זהה לזה שסופק ב- AndroidManifest.xml של קוד ה-Start 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.)

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

b574ea0089ee87c6.png

לידיעתך, ייתכן שייקח מספר שניות כדי להרכיב את הפרויקט ברקע בפעם הראשונה. במהלך הזמן הזה תראה ספינר בשורת המצב בתחתית Android Studio:

4bc64eb3b99eb0ae.png

אנו ממליצים להמתין עד לסיום הפעולה לפני ביצוע שינויים בקוד. זה יאפשר ל-Android Studio למשוך את כל הרכיבים הדרושים.

בנוסף, אם אתה מקבל הנחיה האומרת "טען מחדש כדי ששינויי שפה ייכנסו לתוקף?" או משהו דומה, בחר "כן".

הגדרת אמולטור

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

הבן את קוד ההתחלה של אפליקציית 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 אנדרואיד בשם StockNewsApplication . a4982a8731492dfc.pngccde692f7f68dc5a.png
    • שיעור זה יהיה הראשון שיוצג כאשר האפליקציה מופעלת.
    • בפונקציית onCreate של מחלקה StockNewsApplication , מתווספת קריאה ליצירת אסימון רישום של FCM. זה יפיק אסימון רישום FCM חוקי וירשום אותו.
  • ה- MainActivity.java מוסיף את ה- RecyclerView שמציג את אפשרויות קטגוריית המניות.
  • SubscriptionAdapter.java מיישם את RecyclerView.Adapter אשר משרטט את מסך בחירת קטגוריית המניות.
    • לכל קטגוריית מניות יש שם ולידו מתג מנוי.
    • שינוי הבורר אמור לבצע מנוי בנושא FCM/שיחת ביטול מנוי.
    • אתה תיישם את השיחות האלה במדורים הקרובים.
  • המחלקה model/StockCategories.java מכילה רשימה של כל קטגוריות המניות ושמות הנושאים המשויכים אליהן.

b32663ec4e865a18.png

הפעל את אפליקציית המתנע

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

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 כבר נוספה התלות ב- SDK של firebase-admin . 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 Service שמאפשר ל-firebase-admin SDK לאשר קריאות לממשקי API של 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 והכנס את אסימון הרישום של 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. יישום מנוי לנושא / ביטול מנוי

בשלב זה תטמיעו פעולות הרשמה וביטול מנוי לנושא, בלחצן החלפת קטגוריית המניות של אפליקציית Android.

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

בדוק את הקוד

  • נווט למחלקה SubscriptionAdapter.java בקוד אפליקציית Android ואתר את המחלקה RecyclerViewViewHolder .

6c0614199e684f6.png

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

יישום מנוי לנושא

  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. באופן דומה, במצב אחר, תטמיע את הקריאה ל- 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.

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

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

9. סיכום

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

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

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

c0dc20655d392690.gif

10. נהל מנויי נושא מ-Server Side

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

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

בסעיף זה, תלמד כיצד להשתמש ב-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 API זה. תוסיף את הקוד הרלוונטי לפונקציית unsubscribeFcmRegistrationTokensFromTopic של המחלקה FcmSubscriptionManager.java .

8d9e8ea9d34016bd.png

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

11. מזל טוב

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

947def3eb33b1e4a.gif

מה הלאה?

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

עיון במסמכים