באמצעות FCM, אתם יכולים לשלוח שני סוגים של הודעות לאפליקציות הלקוח:
- הודעות התראה, בדומה ל "הודעות תצוגה", מטופלות על ידי ה-SDK של FCM באופן אוטומטי. (ב-Android עם
AndroidConfigV2, צריך להשתמש ב-RemoteNotificationלכל ההודעות שמוצגות למשתמש כהתראה, כדי שהן יישלחו בלי עיכוב מכוון. ההתראות מוצגות באופן אוטומטי גם אם האפליקציה פועלת בחזית וגם אם היא פועלת ברקע, אלא אם הן הושתקו באופן מפורש בקוד הלקוח). - הודעות נתונים, שמטופלות על ידי אפליקציית הלקוח.
הודעות התראה מכילות קבוצה מוגדרת מראש של מפתחות שגלויים למשתמשים, ויכולות להכיל מטען נתונים אופציונלי. לעומת זאת, הודעות נתונים מכילות רק את צמדי המפתח/ערך המותאמים אישית שהוגדרו על ידי המשתמש. גודל המטען הייעודי המקסימלי של שני סוגי ההודעות הוא 4,096 בייטים, אלא אם שולחים הודעות ממסוף Firebase, שאוכף מגבלת תווים של 1,000.
| שימוש בתרחיש | איך שולחים | |
|---|---|---|
| הודעה לידיעה | FCM SDK מציג את ההודעה במכשירי משתמשי הקצה בשם אפליקציית הלקוח כשהיא פועלת ברקע. אחרת, אם האפליקציה פועלת בחזית כשההתראה מתקבלת, הקוד של האפליקציה קובע את ההתנהגות. |
|
| הודעת נתונים | אפליקציית הלקוח אחראית לעיבוד של הודעות נתונים. הודעות נתונים מכילות רק צמדי מפתח/ערך מותאמים אישית, ללא שמות מפתחות שמורים (ראו בהמשך). | בסביבה מהימנה כמו Cloud Functions או שרת האפליקציה, משתמשים ב-Firebase Admin SDK או ב-HTTP v1 API.
בבקשת השליחה, מגדירים את המפתח data.
|
אתם יכולים להשתמש בהודעות התראה כשאתם רוצים ש-FCM SDK יציג התראה באופן אוטומטי כשהאפליקציה פועלת ברקע. FCM יכול לשלוח הודעה עם מטען ייעודי (payload) אופציונלי של נתונים. במקרים כאלה, FCM מציג את המטען הייעודי (payload) של ההתראה, ואפליקציית הלקוח מטפלת במטען הייעודי של הנתונים.
אתם יכולים להשתמש בהודעות נתונים כשאתם רוצים לעבד את ההודעות באמצעות קוד משלכם באפליקציית הלקוח.
הודעות לידיעה
אתם יכולים לשלוח הודעות באמצעות מסוף Firebase, Firebase Admin SDK או FCM HTTP v1 API. מסוף Firebase מספק בדיקת A/B שמבוססת על ניתוח נתונים, כדי לעזור לכם לשפר את הודעות ההתראה.
כדי לשלוח הודעות באמצעות Firebase Admin SDK או FCM HTTP v1 API, מגדירים את המפתח notification עם קבוצה מוגדרת מראש של אפשרויות מפתח-ערך של הודעת ההתראה. אתם יכולים להשתמש בדוגמה הבאה כדי לעצב הודעה באפליקציית צ'אט:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
}
}
}
הודעות התראה נשלחות למגש ההתראות כשהאפליקציה פועלת ברקע. באפליקציות שפועלות בחזית, ההודעות מטופלות על ידי פונקציית קריאה חוזרת.
כדי לראות את הרשימה המלאה של המפתחות המוגדרים מראש שאפשר להשתמש בהם כדי ליצור הודעות, אתם יכולים לעיין במאמרי העזרה של אובייקט ההתראה ב-FCM HTTP v1 API.
הודעות נתונים
אתם יכולים להחליט איך להשתמש במטען הייעודי (payload) של FCM data כדי להטמיע את סכימת ההצפנה שבחרתם. חשוב לוודא שאתם לא משתמשים במילים שמורות בצמדי המפתח/ערך המותאמים אישית. מילים שמורות כוללות את from, message_type או כל מילה שמתחילה ב-google., gcm. או gcm.notification..
בדוגמה הבאה מוצג השימוש בשדה הנתונים המשותף ברמה העליונה, שמפורש על ידי לקוחות בכל הפלטפורמות שמקבלות את ההודעה. בכל פלטפורמה, אפליקציית הלקוח מקבלת את המטען הייעודי (payload) של הנתונים בפונקציית קריאה חוזרת (callback)
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data":{
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
}
}
}
הודעות התראה עם מטען נתונים אופציונלי
אתם יכולים לשלוח הודעות התראה שמכילות מטען ייעודי (payload) אופציונלי של צמדי מפתח/ערך בהתאמה אישית באופן פרוגרמטי או באמצעות מסוף Firebase. בכלי ליצירת הודעות, משתמשים בשדות נתונים בהתאמה אישית שבאפשרויות מתקדמות.
ההתנהגות של האפליקציה כשמתקבלות הודעות שכוללות גם התראה וגם מטען ייעודי (payload) של נתונים תלויה בשאלה אם האפליקציה פועלת ברקע או בחזית – כלומר, אם היא פעילה או לא בזמן קבלת ההודעה.
- כשהאפליקציה פועלת ברקע, היא מקבלת את המטען הייעודי (payload) של ההתראה במגש ההתראות, ומטפלת במטען הייעודי של הנתונים רק כשהמשתמש מקיש על ההתראה.
- כשהאפליקציה פועלת בחזית, היא מקבלת אובייקט של הודעה עם שני המטענים הייעודיים (payloads) זמינים.
הנה הודעה בפורמט JSON שמכילה גם את המפתח notification וגם את המפתח data:
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Portugal vs. Denmark",
"body":"great match!"
},
"data" : {
"Nick" : "Mario",
"Room" : "PortugalVSDenmark"
}
}
}