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
- במסוף Firebase , לחץ על הוסף פרויקט , שם לפרויקט Firebase StockNews ולחץ על המשך. הערה: זכור את מזהה הפרויקט עבור פרויקט Firebase שלך (או לחץ על סמל העריכה כדי להגדיר את מזהה הפרויקט המועדף עליך).
- אתה יכול לדלג על הפעלת Google Analytics. למטרות מעבד הקוד הזה, אתה לא צריך את זה. לחץ על המשך.
- לחץ על צור פרויקט .
מזל טוב! זה עתה יצרת את פרויקט Firebase שלך. כעת, אתה יכול ללחוץ על שם הפרויקט כדי להיכנס למסוף.
3. תצורת אפליקציית Firebase ספציפית לפלטפורמה
רוב שינויי הקוד הנדרשים כדי להפעיל תמיכה ב-Firebase כבר נבדקו בפרויקט שאתה עובד עליו. עם זאת, על מנת להוסיף תמיכה לפלטפורמות ניידות, עליך:
- רשום את הפלטפורמה הרצויה בפרויקט Firebase
- הורד את קובץ התצורה הספציפי לפלטפורמה, והוסף אותו לקוד.
למטרות מעבדת קוד זה, אנו הולכים להוסיף אפליקציית Android Firebase.
הגדר את אנדרואיד
- ב- Firebase Console , בחר הגדרות פרויקט בחלק העליון של סרגל הניווט השמאלי בגלגל השיניים של ההגדרות, ולחץ על סמל Android תחת האפליקציות שלך בדף כללי .
אתה אמור לראות את הדו-שיח הבא:
- הערך החשוב שיש לספק הוא שם החבילה של Android . הגדר אותו ל-
com.ticker.stocknews
.- שם החבילה שסופק כאן חייב להיות זהה לזה שסופק ב-
AndroidManifest.xml
של קוד ה-Start StockNewsApp שלך. אם תרצה לאתר או לשנות אותו, בצע את השלבים הבאים:- בספריית StockNewsApp , פתח את הקובץ
app/src/main/AndroidManifest.xml
. - ברכיב
manifest
, מצא את ערך המחרוזת של תכונתpackage
. ערך זה הוא שם החבילה של Android.
- בספריית StockNewsApp , פתח את הקובץ
- שם החבילה שסופק כאן חייב להיות זהה לזה שסופק ב-
- בתיבת הדו-שיח של Firebase, הדבק את שם החבילה שהועתק בשדה שם החבילה של Android .
- אינך זקוק לאישור חתימת באגים SHA-1 עבור מעבד הקוד הזה, מכיוון שהאפליקציה הזו לא תשוחרר. השאר את זה ריק.
- לחץ על הרשמה אפליקציה .
- המשך ב-Firebase Console, עקוב אחר ההוראות להורדת קובץ התצורה
google-services.json
. - אתה יכול לדלג על שלבי ההגדרה הנותרים, מכיוון שכל השאר כבר מוגדר בקוד אפליקציית המתנע. תמצא את האפליקציה שלך ברשימה בדף הראשי של Firebase Console.
- העתק את קובץ
google-services.json
(שהורדת זה עתה) לספרייתmessaging/fcm-topics-codelab/starter/StockNewsApp/app
.
4. בנה והפעל את האפליקציה שלך
אתה מוכן להתחיל לעבוד על האפליקציה שלך! ראשית, בנה והפעל את האפליקציה.
ייבא את אפליקציית המתנע
הפעל את Android Studio, וייבא את messaging/fcm-topics-codelab/starter/StockNewsApp
מספריית קוד ההתחלה.
לאחר טעינת הפרויקט, ייתכן שתראה גם התראה ש-Git לא עוקבת אחר כל השינויים המקומיים שלך, אתה יכול ללחוץ על " התעלם " או על ה- X בפינה השמאלית העליונה. (לא תדחוף שום שינויים בחזרה לריפו של Git.)
בפינה השמאלית העליונה של חלון הפרויקט, אתה אמור לראות משהו כמו התמונה למטה אם אתה בתצוגת Android . (אם אתה בתצוגת הפרויקט , תצטרך להרחיב את הפרויקט כדי לראות את אותו הדבר)
לידיעתך, ייתכן שייקח מספר שניות כדי להרכיב את הפרויקט ברקע בפעם הראשונה. במהלך הזמן הזה תראה ספינר בשורת המצב בתחתית Android Studio:
אנו ממליצים להמתין עד לסיום הפעולה לפני ביצוע שינויים בקוד. זה יאפשר ל-Android Studio למשוך את כל הרכיבים הדרושים.
בנוסף, אם אתה מקבל הנחיה האומרת "טען מחדש כדי ששינויי שפה ייכנסו לתוקף?" או משהו דומה, בחר "כן".
הגדרת אמולטור
אם אתה זקוק לעזרה בהגדרת אמולטור אנדרואיד, עיין במאמר הפעל את האפליקציה שלך .
הבן את קוד ההתחלה של אפליקציית Android
- קוד ההתחלה הוא אפליקציית אנדרואיד קלת משקל עם פונקציונליות וממשק משתמש מינימליים.
- תלות ב- SDK להעברת הודעות של Firebase כבר נוספה לקובץ
app/build.gradle
.
- ב-
AndroidManifest.xml
, מטפלMESSAGING_EVENT
התקשרות חוזרת כבר נוסף.- המטפל הזה,
StockNewsMessagingService.java
מרחיב את מחלקתFirebaseMessagingService
המספקת פונקציונליות שונות הקשורות ל-Firebase Cloud Messaging. עיין בתיעוד של FirebaseMessagingService למידע נוסף.
- הפונקציה
onNewToken
נקראת כאשר אסימון הרישום של FCM נוצר או רענון. ראה יצירת אסימוני צג למידע נוסף. - הפונקציה
onMessageReceived
מתקבלת כאשר מתקבלת הודעה והאפליקציה נמצאת בחזית. נכון לעכשיו, זה פשוט רושם את ההודעה שהתקבלה.- ראה קבלת הודעות באפליקציית Android כדי ללמוד עוד על ההבדלים בין מסירה וטיפול בהודעות ברקע ובחזית.
- המטפל הזה,
- כמו כן, ב-
AndroidManifest.xml
מסופקת גם מחלקהApplication
אנדרואיד בשםStockNewsApplication
.- שיעור זה יהיה הראשון שיוצג כאשר האפליקציה מופעלת.
- בפונקציית
onCreate
של מחלקהStockNewsApplication
, מתווספת קריאה ליצירת אסימון רישום של FCM. זה יפיק אסימון רישום FCM חוקי וירשום אותו.
- ה-
MainActivity.java
מוסיף את ה-RecyclerView
שמציג את אפשרויות קטגוריית המניות. -
SubscriptionAdapter.java
מיישם אתRecyclerView.Adapter
אשר משרטט את מסך בחירת קטגוריית המניות.- לכל קטגוריית מניות יש שם ולידו מתג מנוי.
- שינוי הבורר אמור לבצע מנוי בנושא FCM/שיחת ביטול מנוי.
- אתה תיישם את השיחות האלה במדורים הקרובים.
- המחלקה
model/StockCategories.java
מכילה רשימה של כל קטגוריות המניות ושמות הנושאים המשויכים אליהן.
הפעל את אפליקציית המתנע
- חבר את מכשיר האנדרואיד למחשב או הפעל אמולטור.
- בסרגל הכלים העליון, בחר את מכשיר האנדרואיד או האמולטור היעד שלך ולחץ על לחצן ההפעלה.
- ממשק המשתמש של האפליקציה ייראה כך:
- האפליקציה תיצור אסימון רישום של FCM ותרשם אותו. עם זאת שום דבר לא ישתנה בממשק המשתמש של האפליקציה.
- העתק ושמור את אסימון הרישום של FCM כפי שהוא ישמש בשלבים הבאים.
5. שלח הודעת בדיקה
כעת אתה מוכן לשלוח הודעת בדיקה למופע האפליקציה שהגדרת בשלב האחרון.
ייבא את קוד השרת המתחיל
הפעל את IntelliJ IDEA ופתח את פרויקט messaging/fcm-topics-codelab/starter/StockNewsServer
.
תצוגת הפרויקט בסרגל הניווט השמאלי שלך אמורה להיראות בערך כך:
שים לב, ייתכן שיחלפו מספר דקות עד ש-IntellIj IDEA יבנה את הפרויקט שלך, כולל משיכת התלות הנדרשת.
הבן את קוד ההתחלה של השרת
- קוד ההתחלה של השרת הוא פרויקט Java מבוסס Gradle.
- לקובץ
build.gradle
כבר נוספה התלות ב- SDK של firebase-admin . SDK זה מספק גישה לפונקציות שונות של שליחת הודעות FCM.
- לבסוף, ישנם שני כיתות, כלומר:
-
FcmSender.java
: מחלקה זו מכילה את שיטות הערה הבאות:-
initFirebaseSDK
: אתחול Firebase-admin SDK. -
sendMessageToFcmRegistrationToken
: שלח הודעה לאסימון רישום של FCM. -
sendMessageToFcmTopic
: שלח הודעה לנושא FCM. -
sendMessageToFcmTopicCondition
: שלח הודעה לתנאי נושא של FCM.
-
-
FcmSubscriptionManager.java
: מחלקה זו מכילה שיטות המאפשרות ניהול מנויי נושא מצד השרת.-
initFirebaseSDK
: אתחול Firebase-admin SDK. -
subscribeFcmRegistrationTokensToTopic
: הירשם לסימוני רישום של FCM לנושא של FCM. -
unsubscribeFcmRegistrationTokensFromTopic
: בטל את הרישום של אסימון רישום של FCM לנושא של FCM.
-
-
הגדרת קוד השרת
- ראשית, עלינו להגדיר חשבון Firebase Service שמאפשר ל-firebase-admin SDK לאשר קריאות לממשקי API של FCM.
- עבור אל Firebase Console, לחץ על סמל גלגל השיניים לצד סקירת פרויקט בסרגל הניווט הימני, ובחר הגדרות פרויקט .
- בדף ההגדרות, בחר חשבונות שירות ולחץ על צור חשבון שירות .
- כעת לחץ על כפתור צור מפתח פרטי חדש ותתחיל הורדה אוטומטית של קובץ המפתח שלך.
- שנה את שם קובץ המפתח ל-
service-account.json
והעתק אותו בתיקייתmessaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
. - גם
FcmSender.java
וגםFcmSubscriptionManager.java
טוענים את הקובץservice-account.json
מ-classpath באמצעות הקוד הבא.
- בשלב זה, קוד השרת מוכן. הפעל Build -> Build Project משורת התפריטים העליונה.
שליחת הודעת בדיקה
- ב-
FcmSender.java
אתר את הפונקציהsendMessageToFcmRegistrationToken
והכנס את אסימון הרישום של FCM שהעתקת מקטע הפעל את אפליקציית ההתחלה לשדהregistrationToken
. - בפונקציה
main
, בטל את ההערה רק לפונקציהsendMessageToFcmRegistrationToken
ולחץ על הפעלה כדי להפעיל את הקוד.- ראה כיצד אסימון הרישום של FCM מוגדר בשדה
Token
של אובייקטmessage
. - יתר על כן, שימו לב כיצד השתמשנו בממשק API
send
של ממשקFirebaseMessaging
.
- ראה כיצד אסימון הרישום של FCM מוגדר בשדה
- זה אמור לשלוח הודעה למופע האפליקציה שהגדרת בשלב הקודם.
- כאשר מופע האפליקציה נמצא בחזית, אתה אמור לראות את תוכן ההודעה מתועד.
- וכאשר מופע האפליקציה נמצא ברקע, היית רואה את ההודעה מופיעה במגש ההתראות.
מדהים, השתמשת ב-Firebase Admin SDK כדי לשלוח הודעות למופע של אפליקציה. קרא עוד על שימוש ב-Firebase Admin SDK בשרת שלך .
6. יישום מנוי לנושא / ביטול מנוי
בשלב זה תטמיעו פעולות הרשמה וביטול מנוי לנושא, בלחצן החלפת קטגוריית המניות של אפליקציית Android.
כאשר משתמש אפליקציה מחליף את המתג עבור קטגוריית מניות מסוימת, תתבצע הרשמה לנושא או שיחת ביטול מנוי.
בדוק את הקוד
- נווט למחלקה
SubscriptionAdapter.java
בקוד אפליקציית Android ואתר את המחלקהRecyclerViewViewHolder
.
- בנאי המחלקה מגדיר מאזין עבור החלפת מנוי באמצעות
setOnCheckedChangeListener
. - בהתאם להחלפת המעבר, פעולות הרשמה וביטול מנוי מבוצעות על ידי קריאה לשיטות
subscribeToStockCategory
ו-unsubscribeFromStockCategory
בהתאמה. - שיטת
setData
נקראת על ידיonBindViewHolder
של מתאם RecyclerView כדי לאגד את ה-ViewHolder עם קטגוריית המניות המתאימה.
יישום מנוי לנושא
- בשיטת
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(); }); }
יישום ביטול מנוי לנושא
- באופן דומה, במצב אחר, תטמיע את הקריאה ל-
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(); }); }
בואו ננסה את זה
- הפעל את האפליקציה והחלף את אפשרויות קטגוריית המניות כדי לבצע פעולות הרשמה וביטול הרשמה. זה ייראה בערך כך:
הירשם | בטל את המנוי |
7. שליחת הודעת הנושא הראשונה שלך
בשלב זה תטמיע קוד בצד השרת כדי לשלוח הודעת נושא FCM.
הטמעת אינטגרציה בצד השרת לשליחת הודעת נושא
- בקוד השרת, קפוץ אל
FcmSender.java
ואתרו את השיטה ששמהsendMessageToFcmTopic
.
- בשורה הראשונה, ספק את נושא ה-FCM שאליו ברצונך לשלוח את ההודעה.
- זוהי מחרוזת בצורה:
/topics/<Topic Name>
. לדוגמה,/topics/Technology
.
- זוהי מחרוזת בצורה:
- בשורות הבאות צור אובייקט
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();
- כעת הוסף את הקריאה למופע
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
).- ההבדל יהיה במקום להגדיר את שדה
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();
- כעת הוסף את הקריאה למופע
FirebaseMessaging
כדי לשלוח את ההודעה (זהה לשיחת השליחה שנעשתה בפונקציהsendMessageToFcmTopic
).
FirebaseMessaging.getInstance().send(message);
- לבסוף, עדכן את הפונקציה
main
והפעל את הקריאה לפונקציהsendMessageToFcmTopicCondition
בלבד.
שלח את ההודעה ואמת את הקבלה
- לפני שליחת הודעת הנושא, תחילה ודא שמופע האפליקציה שלך עומד בתנאי הנושא שצוין על ידי הרשמה למופע האפליקציה גם בנושאי טכנולוגיה וגם בנושאי רכב.
- כעת תוכל לשלוח את הודעת הנושא שלך על ידי ביצוע הפונקציה
main
שלFcmSender.java
. - כמו קודם, אתה אמור להיות מסוגל לראות את קבלת ההודעה במופע האפליקציה.
- מופע אפליקציה בחזית
- מופע אפליקציה ברקע
- בונוס: כעת תוכל לבטל את המנוי לנושא הטכנולוגיה ולשלוח מחדש את הודעת תנאי הנושא. עליך לשים לב שההודעה לא מתקבלת על ידי מופע האפליקציה.
9. סיכום
בואו נעשה סיכום מהיר של מה שלמדתם עד לנקודה זו.
- כיצד ליזום מנוי לנושא / ביטול מנוי ממופע אפליקציה.
- שליחת הודעה לנושא ואימות קבלה במופעי אפליקציה רשומים.
- שליחת הודעה לנושא תנאי ואימות קבלה במופע אפליקציה שעומד בתנאי.
בסעיף הבא תלמדו כיצד תוכלו להירשם / לבטל את הרישום של מופעי אפליקציה לנושאים ללא צורך בביצוע שיחות מצד הלקוח.
10. נהל מנויי נושא מ-Server Side
עד עכשיו, במעבדת הקוד הזה, כל ההרשמות לנושא ושיחות ביטול המנויים יוזמו ממופע אפליקציה.
עם זאת, במקרים מסוימים, ייתכן שתרצה לנהל את מנויי הנושא מ-Server Side. לדוגמה, ייתכן שתרצה להירשם לקבוצת משנה של בסיס המשתמשים הקיים שלך לנושא חדש מבלי להמתין להשקת אפליקציה.
בסעיף זה, תלמד כיצד להשתמש ב-Firebase Admin SDK כדי להירשם ולבטל את הרישום של אצווה של אסימוני רישום FCM לנושא על ידי ביצוע שיחות מצד השרת.
יישם מנוי בצד השרת של אסימוני רישום FCM לנושא FCM
- בקוד השרת, קפוץ למחלקה
FcmSubscriptionManager.java
. אתר את השיטה בשםsubscribeFcmRegistrationTokensToTopic
. תוכל ליישם את הקריאה ל-subscribeToTopic
API כאן.
- בואו נעשה מנוי למופע האפליקציה לנושא האנרגיה. כדי לעשות זאת, תחילה ספק נתונים עבור שני השדות הבאים:
-
registrationTokens
: רשימה מופרדת בפסיק של מחרוזות המייצגות את אסימוני הרישום של FCM שברצונך ליצור עבורם מנויים לנושאים. -
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
. זה ישלח את ההודעה למופע האפליקציה שלך ותוכל לצפות בה באפליקציה שלך באופן הבא.- מופע אפליקציה בחזית
- מופע אפליקציה ברקע
יישם ביטול מנוי בצד השרת של אסימוני רישום FCM לנושא FCM
- לביטול הרשמות לנושא בצד השרת, השתמש ב-
unsubscribeFromTopic
API זה. תוסיף את הקוד הרלוונטי לפונקצייתunsubscribeFcmRegistrationTokensFromTopic
של המחלקהFcmSubscriptionManager.java
.
- הטמעת קוד ביטול מנוי בצד השרת ואימות השפעתו על ידי שליחת הודעת נושא, נותר כתרגיל עבורך.
11. מזל טוב
מזל טוב, השתמשת בהצלחה בנושאי FCM לשליחת הודעות שידור מרובות לתת-קבוצות של מופעי האפליקציה שלך. זה יעזור לפשט את היכולת שלך להגיע בזמן למשתמשים שלך עם תוכן רלוונטי.
מה הלאה?
כעת, לאחר שהשלמת את מעבדת הקוד שלך, שקול לנסות נושאים עבור פלטפורמות אחרות באמצעות המדריכים הבאים: