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
- נכנסים למסוף Firebase באמצעות חשבון Google.
- לוחצים על הלחצן כדי ליצור פרויקט חדש, ואז מזינים שם לפרויקט (לדוגמה,
StockNews
).
- לוחצים על המשך.
- אם מוצגת בקשה לעשות זאת, קוראים ומאשרים את התנאים של Firebase, ואז לוחצים על המשך.
- (אופציונלי) מפעילים את העזרה מבוססת-AI במסוף Firebase (שנקראת Gemini ב-Firebase).
- ב-codelab הזה לא צריך להשתמש ב-Google Analytics, ולכן משביתים את האפשרות Google Analytics.
- לוחצים על יצירת פרויקט, מחכים שהפרויקט יוקצה ולוחצים על המשך.
כל הכבוד! זהו, יצרתם את פרויקט Firebase.
3. הגדרת אפליקציית Firebase ספציפית לפלטפורמה
רוב השינויים בקוד שנדרשים כדי להפעיל תמיכה ב-Firebase כבר נבדקו בפרויקט שאתם עובדים עליו. עם זאת, כדי להוסיף תמיכה בפלטפורמות לנייד, צריך:
- רישום הפלטפורמה הרצויה בפרויקט Firebase
- מורידים את קובץ ההגדרות שספציפי לפלטפורמה ומוסיפים אותו לקוד.
לצורך ה-codelab הזה, אנחנו נוסיף אפליקציית Android Firebase.
הגדרת Android
- ב-Firebase Console, בוחרים באפשרות Project Settings (הגדרות הפרויקט) בחלק העליון של סרגל הניווט הימני (סמל גלגל השיניים של ההגדרות), ולוחצים על סמל Android בקטע Your apps (האפליקציות שלך) בדף General (כללי).
תיבת הדו-שיח הבאה אמורה להופיע :
- הערך החשוב שצריך לספק הוא שם החבילה ב-Android. מגדירים את הערך ל-
com.ticker.stocknews
.- שם החבילה שציינתם כאן צריך להיות זהה לשם החבילה שציינתם ב-
AndroidManifest.xml
של קוד StockNewsApp שלכם. כדי לאתר את המיקום או לשנות אותו, פועלים לפי השלבים הבאים:- בספרייה StockNewsApp, פותחים את הקובץ
app/src/main/AndroidManifest.xml
. - ברכיב
manifest
, מאתרים את ערך המחרוזת של המאפייןpackage
. הערך הזה הוא שם החבילה ב-Android.
- בספרייה StockNewsApp, פותחים את הקובץ
- שם החבילה שציינתם כאן צריך להיות זהה לשם החבילה שציינתם ב-
- בתיבת הדו-שיח של Firebase, מדביקים את שם החבילה שהעתקתם בשדה שם החבילה ב-Android.
- לא צריך את אישור החתימה לניפוי הבאגים SHA-1 בשביל ה-codelab הזה, כי האפליקציה הזו לא תופץ. משאירים את השדה הזה ריק.
- לוחצים על Register App (רישום האפליקציה).
- ממשיכים במסוף Firebase ופועלים לפי ההוראות להורדת קובץ התצורה
google-services.json
. - אתם יכולים לדלג על שאר שלבי ההגדרה, כי כל השאר כבר מוגדר בקוד של אפליקציית המתחילים. האפליקציה תופיע בדף הראשי של מסוף Firebase.
- מעתיקים את הקובץ
google-services.json
(שהורדתם עכשיו) לספרייהmessaging/fcm-topics-codelab/starter/StockNewsApp/app
.
4. איך יוצרים ומריצים את האפליקציה
עכשיו אפשר להתחיל לעבוד על האפליקציה! קודם כול, בונים את האפליקציה ומריצים אותה.
ייבוא אפליקציה לתחילת הדרך
מפעילים את Android Studio ומייבאים את messaging/fcm-topics-codelab/starter/StockNewsApp
מהספרייה של קוד ההתחלה.
אחרי שהפרויקט נטען, יכול להיות שתוצג גם התראה שלפיה Git לא עוקב אחרי כל השינויים המקומיים. אפשר ללחוץ על התעלמות או על X בפינה השמאלית העליונה. (לא תהיה לכם אפשרות להעביר שינויים בחזרה למאגר Git).
בפינה הימנית העליונה של חלון הפרויקט, אמור להופיע משהו כמו בתמונה שלמטה אם אתם בתצוגה Android. (אם אתם בתצוגה Project, תצטרכו להרחיב את הפרויקט כדי לראות את אותו הדבר)
שימו לב: בפעם הראשונה, יכול להיות שיחלפו כמה שניות עד ש-Android Studio יקמפל את הפרויקט ברקע. במהלך הזמן הזה, תראו אנימציה של גלגל מסתובב בשורת הסטטוס בתחתית Android Studio:
מומלץ לחכות עד שהתהליך יסתיים לפני שמבצעים שינויים בקוד. כך Android Studio יוכל למשוך את כל הרכיבים הנדרשים.
בנוסף, אם מופיעה הנחיה כמו "צריך לטעון מחדש כדי שהשינויים בשפה ייכנסו לתוקף" או משהו דומה, בוחרים באפשרות 'כן'.
הגדרת אמולטור
אם אתם צריכים עזרה בהגדרת אמולטור Android, תוכלו לעיין במאמר הרצת האפליקציה.
הסבר על קוד ההתחלה של אפליקציית Android
- קוד ההתחלה הוא אפליקציית Android קלה עם פונקציונליות וממשק משתמש מינימליים.
- תלות ב-firebase-messaging SDK כבר נוספה לקובץ
app/build.gradle
.
- ב-
AndroidManifest.xml
, כבר נוסףMESSAGING_EVENT
callback handler.- ה-handler הזה,
StockNewsMessagingService.java
, מרחיב את המחלקהFirebaseMessagingService
, שמספקת פונקציונליות שקשורה להעברת הודעות בענן ב-Firebase. מידע נוסף זמין במאמרי העזרה בנושא FirebaseMessagingService.
- המערכת קוראת לפונקציה
onNewToken
כשאסימון הרישום של FCM נוצר או מתרענן. מידע נוסף זמין במאמר בנושא מעקב אחרי יצירת אסימונים. - הפונקציה
onMessageReceived
מופעלת כשמתקבלת הודעה והאפליקציה בחזית. בשלב הזה, ההודעה שהתקבלה פשוט מתועדת.- במאמר קבלת הודעות באפליקציית Android מוסבר על ההבדלים בין מסירת הודעות וטיפול בהן ברקע ובחזית.
- ה-handler הזה,
- בנוסף, ב-
AndroidManifest.xml
, מסופק גם מחלקת AndroidApplication
בשםStockNewsApplication
.- הכיתה הזו תהיה הראשונה שתופעל כשהאפליקציה תתחיל לפעול.
- בפונקציה
onCreate
של המחלקהStockNewsApplication
, נוספת קריאה ליצירת טוקן הרשמה ל-FCM. המערכת תיצור טוקן הרשמה תקף ל-FCM ותתעד אותו ביומן.
- הלחצן
MainActivity.java
מוסיף אתRecyclerView
שבו מוצגות האפשרויות של קטגוריית המלאי. -
SubscriptionAdapter.java
מטמיע אתRecyclerView.Adapter
שיוצר את מסך הבחירה של קטגוריית המלאי.- לכל קטגוריית מלאי יש שם ומתג מינוי לידה.
- שינוי המתג אמור להפעיל קריאה ל-FCM בנושא הרשמה או ביטול הרשמה.
- תיישמו את הקריאות האלה בסעיפים הבאים.
- הכיתה
model/StockCategories.java
מכילה רשימה של כל קטגוריות המלאי ושמות הנושאים שמשויכים אליהן.
הפעלת אפליקציית המתחילים
- מחברים את מכשיר Android למחשב או מפעילים אמולטור.
- בסרגל הכלים העליון, בוחרים את מכשיר ה-Android או האמולטור הרצויים ולוחצים על לחצן ההפעלה.
- ממשק המשתמש של האפליקציה ייראה כך:
- האפליקציה תיצור אסימון רישום ל-FCM ותתעד אותו ביומן. עם זאת, לא יהיו שינויים בממשק המשתמש של האפליקציה.
- מעתיקים ושומרים את טוקן הרישום של FCM, כי תצטרכו אותו בשלבים הבאים.
5. שליחת הודעת בדיקה
עכשיו אפשר לשלוח הודעת בדיקה למופע האפליקציה שהגדרתם בשלב הקודם.
ייבוא קוד השרת לתחילת הדרך
מפעילים את IntelliJ IDEA ופותחים את הפרויקט messaging/fcm-topics-codelab/starter/StockNewsServer
.
תצוגת הפרויקט בסרגל הניווט הימני אמורה להיראות כך:
שימו לב, יכול להיות שיעברו כמה דקות עד ש-IntellIj IDEA יבנה את הפרויקט, כולל משיכת התלויות הנדרשות.
הסבר על קוד ההתחלה של השרת
- קוד ההתחלה של השרת הוא פרויקט Java שמבוסס על Gradle.
- הקובץ
build.gradle
כבר כולל את התלות ב-Firebase Admin SDK. ה-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 Registration לנושא ב-FCM.
-
-
הגדרת קוד השרת
- קודם צריך להגדיר חשבון שירות ב-Firebase שיאפשר ל-Firebase Admin SDK לאשר קריאות ל-FCM API.
- נכנסים אל מסוף Firebase, לוחצים על סמל גלגל השיניים לצד Project Overview (סקירת הפרויקט) בסרגל הניווט שמימין, ובוחרים באפשרות Project settings (הגדרות הפרויקט).
- בדף ההגדרות, בוחרים באפשרות חשבונות שירות ולוחצים על יצירת חשבון שירות.
- עכשיו לוחצים על הלחצן Generate new private key (יצירת מפתח פרטי חדש), והורדה אוטומטית של קובץ המפתח תתחיל.
- משנים את השם של קובץ המפתח ל-
service-account.json
ומעתיקים אותו לתיקייהmessaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
. - הפקודות
FcmSender.java
ו-FcmSubscriptionManager.java
טוענות את הקובץservice-account.json
מנתיב המחלקה באמצעות הקוד הבא.
- נכנסים אל מסוף Firebase, לוחצים על סמל גלגל השיניים לצד Project Overview (סקירת הפרויקט) בסרגל הניווט שמימין, ובוחרים באפשרות Project settings (הגדרות הפרויקט).
- בשלב הזה, קוד השרת מוכן. מריצים את הפקודה Build -> Build Project (בנייה -> בניית הפרויקט) מסרגל התפריטים העליון.
שליחת הודעת בדיקה
- ב-
FcmSender.java
מאתרים את הפונקציהsendMessageToFcmRegistrationToken
ומוסיפים את טוקן הרישום של FCM שהעתקתם מהקטע הרצת אפליקציית המתחילים בשדהregistrationToken
. - בפונקציה
main
, מבטלים את ההערה רק בפונקציהsendMessageToFcmRegistrationToken
ולוחצים על 'הרצה' כדי להריץ את הקוד.- שימו לב איך טוקן הרישום של FCM מוגדר בשדה
Token
של האובייקטmessage
. - בנוסף, שימו לב לשימוש ב-API
send
של הממשקFirebaseMessaging
.
- שימו לב איך טוקן הרישום של FCM מוגדר בשדה
- הפעולה הזו אמורה לשלוח הודעה למופע האפליקציה שהגדרתם בשלב הקודם.
- כשהמופע של האפליקציה נמצא בחזית, תוכן ההודעה אמור להופיע ביומן.
- וכשהמופע של האפליקציה פועל ברקע, ההודעה תופיע במגש ההתראות.
מעולה, השתמשת ב-Firebase Admin SDK כדי לשלוח הודעות למופע של אפליקציה. מידע נוסף על שימוש ב-Firebase Admin SDK בשרת
6. הטמעה של הרשמה לנושאים או ביטול הרשמה
בשלב הזה מטמיעים פעולות של הרשמה לנושא וביטול הרשמה לנושא, במתג Stock Category (קטגוריית מלאי) באפליקציית Android.
כשמשתמש באפליקציית App מחליף את המצב של המתג בקטגוריית מלאי מסוימת, מתבצעת קריאה להרשמה לנושא או לביטול ההרשמה לנושא.
קוד הביקורת
- עוברים לכיתה
SubscriptionAdapter.java
בקוד של אפליקציית Android ומאתרים את הכיתהRecyclerViewViewHolder
.
- הבונה של המחלקה מגדיר מאזין למתג המינוי באמצעות
setOnCheckedChangeListener
. - בהתאם למתג, פעולות ההרשמה והביטול מתבצעות על ידי קריאה לשיטות
subscribeToStockCategory
ו-unsubscribeFromStockCategory
בהתאמה. - השיטה
setData
נקראת על ידיonBindViewHolder
של RecyclerView Adapter כדי לקשור את ViewHolder לקטגוריית המלאי המתאימה.
הטמעה של מינוי לנושא
- בשיטה
subscribeToStockCategory
, מטמיעים את הקריאה ל-APIsubscribeToTopic
של אובייקט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(); }); }
יישום של ביטול הרשמה לנושא
- באופן דומה, בתנאי 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(); }); }
רוצים לנסות?
- מריצים את האפליקציה ומעבירים את המתגים של אפשרויות קטגוריית המניות כדי לבצע פעולות של הרשמה וביטול הרשמה. הוא ייראה בערך כך:
הרשמה | ביטול ההרשמה |
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, אפשר לשלוח הודעות לקבוצה של מופעי אפליקציה שנרשמו לנושאים 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)
– טירגוט רק של מופעי אפליקציות שנרשמו לנושא 'טכנולוגיה' ולנושא 'רכב' או 'אנרגיה'.
מידע נוסף על יצירת בקשות שליחה לשימוש בפונקציונליות הזו
הטמעת שילוב בצד השרת לשליחת הודעה על תנאי הנושא
- חוזרים לקוד השרת, עוברים אל
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
.
שליחת ההודעה ואימות הקבלה
- לפני ששולחים את ההודעה בנושא, קודם מוודאים שמופע האפליקציה עומד בתנאי הנושא שצוין, על ידי הרשמת מופע האפליקציה לנושאים Technology ו-Automotive.
- עכשיו אפשר לשלוח את ההודעה לנושא על ידי הפעלת הפונקציה
main
שלFcmSender.java
. - כמו קודם, אמורה להיות לכם אפשרות לראות את קבלת ההודעה במופע של האפליקציה.
- מופע של אפליקציה בחזית
- מופע של אפליקציה ברקע
- בונוס: עכשיו אפשר לבטל את ההרשמה לנושא 'טכנולוגיה' ולשלוח מחדש את ההודעה עם התנאי לנושא. אפשר לראות שההודעה לא מתקבלת במופע של האפליקציה.
9. תקציר
בואו נעשה סיכום קצר של מה שלמדתם עד עכשיו.
- איך מתחילים או מפסיקים לקבל עדכונים בנושא מסוים ממופע של אפליקציה.
- שליחת הודעה לנושא ואימות הקבלה במופעים של אפליקציות שנרשמו לנושא.
- שליחת הודעה לתנאי של נושא ואימות הקבלה במופע של אפליקציה שעומד בתנאי.
בקטע הבא מוסבר איך אפשר להירשם לנושאים או לבטל את ההרשמה שלהם למופעים של אפליקציות בלי ליצור מופעים של קריאות מצד הלקוח.
10. ניהול מינויים לנושאים בצד השרת
עד עכשיו, בכל קוד ה-Codelab הזה, כל הקריאות לרישום לנושאים ולביטול הרישום לנושאים מופעלות ממופע של אפליקציה.
עם זאת, בתרחישי שימוש מסוימים, יכול להיות שתרצו לנהל את המינויים לנושאים מצד השרת. לדוגמה, יכול להיות שתרצו לרשום קבוצת משנה של בסיס המשתמשים הקיים שלכם לנושא חדש בלי לחכות להשקת האפליקציה.
בקטע הזה נסביר איך להשתמש ב-Firebase Admin SDK כדי לרשום קבוצה של טוקנים של רישום ל-FCM לנושא מסוים ולבטל את הרישום שלהם. לשם כך, צריך לבצע קריאות מצד השרת.
הטמעה של הרשמה בצד השרת של טוקנים של FCM Registration לנושא ב-FCM
- בקוד השרת, עוברים אל
FcmSubscriptionManager.java
class. מאתרים את השיטה שנקראתsubscribeFcmRegistrationTokensToTopic
. כאן מטמיעים את הקריאה ל-APIsubscribeToTopic
.
- נרשום את מופע האפליקציה לנושא Energy. כדי לעשות זאת, קודם צריך לספק נתונים בשני השדות הבאים:
-
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 Registration לנושא ב-FCM
- כדי לבטל הרשמה לנושאים בצד השרת, משתמשים ב-API
unsubscribeFromTopic
. מוסיפים את הקוד הרלוונטי לפונקציהunsubscribeFcmRegistrationTokensFromTopic
של המחלקהFcmSubscriptionManager.java
.
- הטמעה של קוד לביטול הרשמה בצד השרת ואימות ההשפעה שלו על ידי שליחת הודעה בנושא מסוים נשארים כתרגיל בשבילכם.
11. מזל טוב
הצלחתם להשתמש בנושאים של FCM כדי לשלוח הודעות מרובות משתתפים לקבוצות משנה של מופעי האפליקציה. כך תוכלו להגיע למשתמשים בזמן עם תוכן רלוונטי.
מה השלב הבא?
אחרי שסיימתם את ה-codelab, כדאי לנסות נושאים לפלטפורמות אחרות באמצעות המדריכים הבאים: