1. מבוא
מטרות עסקיות
ב-codelab הזה תלמדו איך להטמיע את האפליקציה שלכם בפלטפורמות שונות כדי שתוכלו לשלוח הודעות push ב-multicast לקבוצות משנה שונות של מכונות האפליקציה באמצעות נושאי FCM.
בסיום, תוכלו להשתמש בתשתית של FCM כדי לנהל את קבוצות המשנה האלה, וגם לשלוח הודעות דחיפה (push) למספר משתמשים בו-זמנית (multicast) דרך קבוצות המשנה.
סקירה כללית של נושאים
נושאים הם דרך נתמכת בתשתית של FCM להגיע לקבוצות משנה של מכונות האפליקציה שלכם באמצעות הודעות.
FCM מספק ממשקי ה-API לשליחת הודעות וכן לתחזק את המינויים לנושאים האלה. פעולת השיוך וההפרדה של מכונה של אפליקציה לנושא נקראת הרשמה וביטול הרשמה, בהתאמה.
כדאי להשתמש בנושאים לתוכן שגלוי לכולם. לדוגמה, הודעות על עדכוני מזג אוויר. אם אתם רוצים לשלוח הודעות עם מידע אישי רגיש של משתמשים, תוכלו להשתמש ב-Firebase Admin SDK כדי לשלוח הודעות למספר משתמשים בו-זמנית במספר מכשירים.
ריבוי שידורים (multicast) שמבוסס על נושאים מותאם לתפוקה.
מה תלמדו
- איך להירשם (לבטל הרשמה) למשתמשים לנושאים מאפליקציה לנייד.
- איך לשלוח הודעות דחיפה בריבוי שידורים באמצעות נושאים.
- איך שולחים הודעות לשילוב של נושאים בעזרת תנאים של נושאים.
- איך לנהל מינויים לנושאים בצד השרת ולבצע מינויים בכמות גדולה וביטולי מינויים.
מה תפַתחו
- אפליקציה ל-Android שנרשמת או מבטלת את ההרשמה לנושאים ומקבלת הודעות שנשלחות לנושאים.
- שילוב בצד השרת באמצעות Firebase Admin SDK, שישמש לשליחת הודעות נושא דרך ממשקי API של FCM.
מה צריך להכין
- דפדפן לבחירתכם, כמו Chrome.
- סביבת פיתוח משולבת (IDE) של IntelliJ IDEA לפיתוח אפליקציות Java.
- חשוב להצטרף לתמיכה ב-Gradle בזמן ההתקנה.
- סביבת פיתוח משולבת (IDE) של Android Studio לפיתוח אפליקציות ל-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
האפליקציה הבסיסית של סדנת הקוד הזו נמצאת בספרייה messaging
בהסתעפות fcm-topics-codelab
. כדי לקבל את הקוד לתחילת הפעולה, יש לפעול לפי השלבים הבאים. הוא מכיל שתי ספריות: StockNewsApp
ו-StockNewsServer
. הגרסה הראשונה כוללת את האפליקציה לתחילת העבודה ל-Android, והשנייה כוללת את הקוד בצד השרת לתחילת הפעולה.
git checkout fcm-topics-codelab cd messaging/fcm-topics-codelab/starter
הגרסה המלאה של Codelab הזו נמצאת בספרייה messaging/fcm-topics-codelab/completed
.
יצירת פרויקט Firebase
- במסוף Firebase, לוחצים על Add project (הוספת פרויקט), נותנים שם לפרויקט ב-Firebase (StockNews) ולוחצים על Continue (המשך). הערה: חשוב לזכור את מזהה הפרויקט של פרויקט Firebase (או ללחוץ על סמל העריכה כדי להגדיר את מזהה הפרויקט המועדף).
- אפשר לדלג על ההפעלה של Google Analytics. לצורך ה-Codelab הזה, אתם לא צריכים אותו. לוחצים על המשך.
- לוחצים על Create project.
כל הכבוד! סיימתם ליצור את פרויקט Firebase. עכשיו אפשר ללחוץ על שם הפרויקט כדי להיכנס למסוף.
3. הגדרה ספציפית של אפליקציית Firebase לפלטפורמה
רוב השינויים בקוד שנדרשים כדי להפעיל תמיכה ב-Firebase כבר נמצאים בפרויקט שבו אתם עובדים. אבל, כדי להוסיף תמיכה בפלטפורמות לניידים, צריך:
- רושמים את הפלטפורמה הרצויה בפרויקט Firebase
- מורידים את קובץ התצורה הספציפי לפלטפורמה ומוסיפים אותו לקוד.
במסגרת הקודלאב הזה, נוסיף אפליקציית Android ל-Firebase.
הגדרת Android
- במסוף Firebase, בוחרים באפשרות 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 הזה, כי האפליקציה הזו לא תפורסם. צריך להשאיר את השדה הזה ריק.
- לוחצים על רישום האפליקציה.
- ממשיכים במסוף 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 קלה עם פונקציונליות וממשק משתמש מינימליים.
- לקובץ
app/build.gradle
כבר נוספה תלות ב-firebase-messaging SDK .
- ב-
AndroidManifest.xml
, כבר נוסף handler של קריאה חוזרתMESSAGING_EVENT
.- הטיפול הזה,
StockNewsMessagingService.java
, הוא תוספת לכיתהFirebaseMessagingService
שמספקת פונקציונליות שקשורה להעברת הודעות בענן ב-Firebase. מידע נוסף זמין במסמכי התיעוד של FirebaseMessagingService.
- מתבצעת קריאה לפונקציה
onNewToken
בזמן יצירה או רענון של אסימון הרישום של FCM. מידע נוסף זמין במאמר יצירת אסימון מעקב. - מתבצעת קריאה לפונקציה
onMessageReceived
כשמתקבלת הודעה והאפליקציה בחזית. נכון לעכשיו, המערכת רק מתעדת את ההודעה שהתקבלה.- במאמר קבלת הודעות באפליקציית Android תוכלו לקרוא מידע נוסף על ההבדלים בין מסירת הודעות ברקע לבין טיפול בהן.
- הטיפול הזה,
- בנוסף, ב-
AndroidManifest.xml
ניתנת גם כיתהApplication
של Android בשם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.
- התלות ב-firebase-admin SDK כבר נוספה לקובץ
build.gradle
. ה-SDK הזה מספק גישה לפונקציונליות שונות לשליחת הודעות ב-FCM.
- לבסוף, יש שני סיווגים:
FcmSender.java
: הכיתה הזו כוללת את השיטות הבאות להצגת הערות:initFirebaseSDK
: הפעלת ה-SDK של firebase-admin.sendMessageToFcmRegistrationToken
: שולחים הודעה לאסימון רישום של FCM.sendMessageToFcmTopic
: שליחת הודעה לנושא ב-FCM.sendMessageToFcmTopicCondition
: שליחת הודעה לתנאי של נושא FCM.
FcmSubscriptionManager.java
: הכיתה הזו מכילה שיטות שמאפשרות לנהל מינויים לנושאים מצד השרת.initFirebaseSDK
: הפעלת ה-SDK של firebase-admin.subscribeFcmRegistrationTokensToTopic
: הרשמה של אסימוני רישום ב-FCM לנושא ב-FCM.unsubscribeFcmRegistrationTokensFromTopic
: ביטול הרשמה לאסימוני רישום של FCM מנושא FCM.
הגדרת קוד השרת
- קודם כול צריך להגדיר חשבון שירות ב-Firebase שמאפשר ל-firebase-admin SDK לאשר קריאות לממשקי API של FCM.
- נכנסים למסוף Firebase, לוחצים על סמל גלגל השיניים שלצד הקטע סקירה כללית של הפרויקט בסרגל הניווט הימני, ובוחרים באפשרות הגדרות הפרויקט.
- בדף ההגדרות, בוחרים באפשרות Service accounts ולוחצים על Create service account.
- עכשיו לוחצים על הלחצן Generate new private key (יצירת מפתח פרטי חדש) וההורדה האוטומטית של קובץ המפתח תתחיל.
- משנים את השם של קובץ המַפְתח לשם
service-account.json
ומעתיקים אותו לתיקייהmessaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
. - גם
FcmSender.java
וגםFcmSubscriptionManager.java
טוענים את הקובץservice-account.json
מ-classpath באמצעות הקוד הבא.
- נכנסים למסוף Firebase, לוחצים על סמל גלגל השיניים שלצד הקטע סקירה כללית של הפרויקט בסרגל הניווט הימני, ובוחרים באפשרות הגדרות הפרויקט.
- בשלב הזה, קוד השרת מוכן. הריצו את Build -> יצירת פרויקט מסרגל התפריטים העליון.
שליחת הודעת בדיקה
- בקטע
FcmSender.java
, מאתרים את הפונקציהsendMessageToFcmRegistrationToken
ומזינים את אסימון הרישום של FCM שהעתקתם מהקטע הפעלת האפליקציה למתחילים בשדהregistrationToken
. - בפונקציה
main
, מסירים את ההערה רק מהפונקציהsendMessageToFcmRegistrationToken
ולוחצים על 'הפעלה' כדי להריץ את הקוד.- חשוב לבדוק איך אסימון הרישום של FCM מוגדר בשדה
Token
של האובייקטmessage
. - בנוסף, תוכלו לראות איך השתמשנו ב-API של
send
של הממשקFirebaseMessaging
.
- חשוב לבדוק איך אסימון הרישום של FCM מוגדר בשדה
- הפעולה הזו תשלח הודעה למופע של האפליקציה שהגדרתם בשלב הקודם.
- כשמכונה של האפליקציה נמצאת בחזית, תוכן ההודעה אמור להופיע ביומן.
- כשמכונה של אפליקציה פועלת ברקע, ההודעה מופיעה במגש ההתראות.
מעולה, השתמשת ב-SDK Admin ב-Firebase כדי לשלוח הודעות למופע של אפליקציה. בקישור הבא אפשר לקרוא מידע נוסף על שימוש ב-Firebase Admin SDK בשרת.
6. הטמעת מינוי לנושא / ביטול מינוי
בשלב הזה תרתמו פעולות של הרשמה לנושאים והסרה של הרשמה לנושאים, בלחצן החלפת המצב של קטגוריית המניות באפליקציה ל-Android.
כשמשתמש באפליקציה מחליף את המתג של קטגוריית מלאי מסוימת, תתבצע שיחה למינוי לנושא או לביטול המינוי.
בדיקת הקוד
- עוברים לכיתה
SubscriptionAdapter.java
בקוד של האפליקציה ל-Android ומאתרים את הכיתהRecyclerViewViewHolder
.
- ה-constructor של הכיתות מגדיר listener למתג המינויים באמצעות
setOnCheckedChangeListener
. - בהתאם למתג כדי להחליף את המצב, פעולות הרשמה וביטול הרשמה מתבצעות על ידי קריאה לשיטות
subscribeToStockCategory
ו-unsubscribeFromStockCategory
בהתאמה. - נשלחה קריאה לשיטה
setData
על ידיonBindViewHolder
של מתאם RecyclerView כדי לקשר את ViewHolder לקטגוריית המלאי המתאימה.
הטמעת מינויים לנושאים
- בשיטה
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(); }); }
הטמעת ביטול הרשמה לנושאים
- באופן דומה, בתנאי אחר תטמיעו את הקריאה ל-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 שלנו, כדאי לשלוח הודעות לקבוצה של מכונות של האפליקציה שנרשמו לנושאים 'טכנולוגיה' או 'כלי רכב'. מקרה כזה יכול לקרות, למשל, אם יש אירוע חשוב שקשור ל-Waymo.
בעזרת Topics אפשר לבטא את השילוב שלכם בצורת ביטוי בוליאני באמצעות האופרטורים הבאים:
- && : 'וגם' לוגי. לדוגמה,
'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
. - כמו קודם, אתם אמורים לראות את קבלת ההודעה במופע של האפליקציה.
- מופע של האפליקציה בחזית
- מופע של האפליקציה ברקע
- בונוס: עכשיו אפשר לבטל את ההרשמה לנושא Technology ולשלוח מחדש את הודעת התנאי של הנושא. שימו לב שההודעה לא מתקבלת במכונה של האפליקציה.
9. תקציר
נבצע סיכום קצר של מה שלמדתם עד עכשיו.
- איך להפעיל מינוי לנושא או לבטל את המינוי למופע של אפליקציה.
- שליחת הודעה לנושא ואימות קבלה במופעים של אפליקציות שנרשמת אליהן.
- שליחת הודעה לתנאי של נושא ואימות הקבלה במכונה של האפליקציה שעומדת בתנאי.
בקטע הבא נסביר איך להירשם או לבטל את ההרשמה של מופעים של אפליקציות לנושאים בלי שיהיה צורך ליצור שיחות מצד הלקוח.
10. ניהול מינויים לנושאים מצד השרת
עד עכשיו, ב-Codelab הזה, כל השיחות לקבלת נושאים וביטולי מינויים מבוצעות ממופע של אפליקציה.
עם זאת, בתרחישים מסוימים כדאי לנהל את המינויים לנושאים מצד השרת. לדוגמה, יכול להיות שתרצו לרשום קבוצת משנה של בסיס המשתמשים הקיים לנושא חדש בלי לחכות להשקת האפליקציה.
בקטע הזה נסביר איך משתמשים ב-Firebase Admin SDK כדי להירשם ולבטל את ההרשמה לקבוצה של אסימוני רישום FCM לנושא באמצעות ביצוע קריאות בצד השרת.
הטמעת מינוי בצד השרת לאסימוני רישום של FCM לנושא FCM
- בקוד השרת, עוברים לכיתה
FcmSubscriptionManager.java
. מאתרים את השיטה בשםsubscribeFcmRegistrationTokensToTopic
. כאן צריך להטמיע את הקריאה ל-API שלsubscribeToTopic
.
- נרשום את מופע האפליקציה לנושא 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
. - לסיום, מעדכנים את ה-method
main
כדי להפעיל רק את הפונקציהsendMessageToFcmTopic
.
- ב-
- מפעילים את הפונקציה
main
שלFcmSender.java
. ההודעה תישלח למופע של האפליקציה ותוכלו לראות אותה באפליקציה באופן הבא.- מופע של האפליקציה בחזית
- מופע של האפליקציה ברקע
הטמעת ביטול הרשמה של אסימוני רישום FCM לנושא FCM בצד השרת
- כדי לבטל מינויים לנושאים בצד השרת, משתמשים ב-API הזה
unsubscribeFromTopic
. מוסיפים את הקוד הרלוונטי לפונקציהunsubscribeFcmRegistrationTokensFromTopic
של הכיתהFcmSubscriptionManager.java
.
- אנחנו משאירים לכם את האימוץ של קוד הביטול של המינוי בצד השרת ואת אימות ההשפעה שלו על ידי שליחת הודעת נושא.
11. מזל טוב
מזל טוב, הצלחת להשתמש בנושאי FCM כדי לשלוח הודעות מרובות-כתובת לקבוצות משנה של מכונות האפליקציה. כך תוכלו להגיע למשתמשים שלכם בזמן עם תוכן רלוונטי.
מה השלב הבא?
עכשיו, אחרי שסיימתם את ה-Codelab, מומלץ לנסות נושאים לפלטפורמות אחרות באמצעות המדריכים הבאים: