במסמך הזה יש הפניה לתחביר ה-XMPP שמשמש להעברה הודעות בין שרת האפליקציה, אפליקציות הלקוח ו-Firebase Cloud Messaging (FCM). שרת האפליקציה צריך להתחבר לנקודות הקצה הבאות:
// Production fcm-xmpp.googleapis.com:5235 // Testing fcm-xmpp.googleapis.com:5236
הפרמטרים הזמינים האפשרויות נכללות בקטגוריות הבאות:
- תחביר של הודעות במורד הזרם
- קודי תגובה של שגיאות בהודעות במורד הזרם
- תחביר של הודעות ב-Upstream
- FCM הודעות שליטה
תחביר של הודעות במורד הזרם
בקטע הזה מצוין התחביר לשליחת הודעות במורד הזרם (downstream).
הודעות XMPP במורד הזרם (JSON)
בטבלה הבאה מפורטים היעדים, האפשרויות והמטען הייעודי (payload) של XMPP JSON. הודעות.
פרמטר | שימוש | תיאור | |
---|---|---|---|
טירגוט | |||
to |
אופציונלי, מחרוזת |
הפרמטר הזה מציין את הנמען של ההודעה.
הערך יכול להיות טוקן רישום של מכשיר, מפתח התראות של קבוצת מכשירים או נושא יחיד (עם הקידומת |
|
condition |
אופציונלי, מחרוזת | הפרמטר הזה מציין ביטוי לוגי של תנאים קובע את יעד ההודעה. תנאי נתמך: נושא, בפורמט 'yourTopic' בנושאים". הערך הזה לא תלוי רישיות. אופרטורים נתמכים: |
|
אפשרויות | |||
message_id |
שדה חובה, מחרוזת | הפרמטר הזה מזהה באופן ייחודי הודעה בחיבור XMPP. |
|
collapse_key |
אופציונלי, מחרוזת | הפרמטר הזה מזהה קבוצת הודעות (למשל, עם אין ערובה לסדר שבו ההודעות נשלחות. הערה: בכל רגע נתון מותר להשתמש ב-4 מפתחות כיווץ שונים לכל היותר. כלומר FCM יכול לאחסן 4 קבצים שונים בו-זמנית הודעות לכל אפליקציית לקוח. אם גדול ממספר זה, אי אפשר להבטיח אילו 4 מפתחות כיווץ FCM יישמרו. |
|
priority |
אופציונלי, מחרוזת | מגדיר את עדיפות ההודעה. הערכים החוקיים הם 'רגילים' ו-"high". בפלטפורמות של Apple, הן תואמות לעדיפויות 5 ו-10 של ה-APN. כברירת מחדל, הודעות התראה נשלחות בעדיפות גבוהה והודעות נתונים נשלחים בעדיפות רגילה. עדיפות רגילה מבצעת אופטימיזציה של אפליקציית הלקוח צריכת הסוללה ויש להשתמש בה אלא אם נדרשת שליחה מיידית. כשמדובר בהודעות עם עדיפות רגילה, האפליקציה עשויה לקבל את ההודעה עם עיכוב לא מוגדר. כאשר הודעה נשלחת בעדיפות גבוהה, היא נשלחת באופן מיידי, והאפליקציה יכול להציג התראה. |
|
content_available |
אופציונלי, ערך בוליאני | בפלטפורמות של Apple, צריך להשתמש בשדה הזה כדי לייצג את |
|
mutable_content |
אופציונלי, ערך בוליאני של JSON | בפלטפורמות של Apple, משתמשים בשדה הזה כדי לייצג
|
|
time_to_live |
אופציונלי, מספר | הפרמטר הזה מציין למשך כמה זמן (בשניות) ההודעה צריכה להישמר באחסון של FCM אם המכשיר במצב אופליין. משך החיים המקסימלי שנתמך הוא 4 שבועות, וערך ברירת המחדל הוא 4 שבועות. למידע נוסף, ראו הגדרת אורך החיים של הודעה. |
|
dry_run |
אופציונלי, ערך בוליאני | כשהפרמטר הזה מוגדר ל- ערך ברירת המחדל הוא |
|
מטען ייעודי (Payload) | |||
data |
אופציונלי, אובייקט | הפרמטר הזה מציין את צמדי המפתח/ערך של המטען הייעודי (Payload) של ההודעה. לדוגמה, עם בפלטפורמות של Apple, אם ההודעה נמסרת באמצעות נקודות APN, היא מייצגת את שדות הנתונים בהתאמה אישית. אם המיקום
הוא נמסר על ידי FCM,
הוא מיוצג כמילון של ערכי מפתח ב ב-Android, התוצאה תהיה תוספת Intent בשם המפתח לא יכול להיות מילה שמורה ('from', 'message_type' או כל מילה שמתחילה ב-)
"google" או 'gcm'). לא להשתמש באף אחת מהמילים שהוגדרו בטבלה
(למשל מומלץ להשתמש בערכים בסוגי המחרוזת. עליכם להמיר ערכים באובייקטים או בסוגי נתונים אחרים שאינם מחרוזות (למשל, מספרים שלמים או ערכים בוליאניים) למחרוזת. |
|
notification |
אופציונלי, אובייקט | הפרמטר הזה מציין את צמדי המפתח/ערך הגלויים למשתמש שהוגדרו מראש
מטען ייעודי (payload) של התראות. לפרטים נוספים, ראו תמיכה במטען ייעודי (payload) של התראות. אפשר לקבל מידע נוסף
על אפשרויות של הודעות והתראות באמצעות נתונים, ראה
סוגי הודעות. אם סופק מטען ייעודי (payload) של התראה, או
האפשרות content_available מוגדרת ל-true עבור הודעה ל-Apple
במכשיר, ההודעה נשלחת דרך נקודות APN, אחרת היא נשלחת באמצעות
FCM
|
תמיכה בתוכן של ההתראות
הטבלאות הבאות מפרטות את הערכים המוגדרים מראש מפתחות שזמינים ליצירת הודעות התראה עבור פלטפורמות של Apple ו-Android.
פרמטר | שימוש | תיאור |
---|---|---|
title |
אופציונלי, מחרוזת |
כותרת ההתראה. השדה הזה לא מוצג בטלפונים ובטאבלטים. |
body |
אופציונלי, מחרוזת |
הטקסט של גוף ההתראה. |
sound |
אופציונלי, מחרוזת |
הצליל שיושמע כשהמכשיר יקבל את ההתראה.
מחרוזת שמציינת קובצי קול בחבילה הראשית של אפליקציית הלקוח או
תיקייה אחת ( |
badge |
אופציונלי, מחרוזת |
ערך התג בסמל האפליקציה במסך הבית. אם לא מציינים זאת, התג לא ישתנה.
אם המדיניות מוגדרת לערך |
click_action |
אופציונלי, מחרוזת |
הפעולה שמשויכת ללחיצה של משתמש על ההתראה.
תואם ל- |
subtitle |
אופציונלי, מחרוזת |
כותרת המשנה של ההתראה. |
body_loc_key |
אופציונלי, מחרוזת |
המפתח למחרוזת ה-body במשאבי המחרוזת של האפליקציה, שבו יש להשתמש כדי תרגום הטקסט בגוף הטקסט להתאמה לשוק המקומי הנוכחי של המשתמש.
תואם ל- צפייה סימוכין למפתחות מטען ייעודי (payload) וגם התאמת התוכן של ההתראות מרחוק מידע. |
body_loc_args |
מערך אופציונלי של JSON כמחרוזת |
ערכי מחרוזת משתנים שיש להשתמש בהם במקום מצייןי הפורמט
תואם ל- צפייה סימוכין למפתחות מטען ייעודי (payload) וגם התאמת התוכן של ההתראות מרחוק מידע. |
title_loc_key |
אופציונלי, מחרוזת |
המפתח למחרוזת הכותרת במשאבי המחרוזת של האפליקציה, שבו יש להשתמש כדי התאמה לשוק המקומי של טקסט הכותרת בהתאם לשוק המקומי הנוכחי של המשתמש.
תואם ל- למידע נוסף, ראו מידע על מפתחות של נתוני עומס (payload) והתאמה של התוכן של ההתראות מרחוק לשוק המקומי. |
title_loc_args |
מערך אופציונלי של JSON כמחרוזת |
ערכים של מחרוזות משתנות שישמשו במקום מפרידי הפורמט ב-
תואם ל- צפייה סימוכין למפתחות מטען ייעודי (payload) וגם התאמת התוכן של ההתראות מרחוק מידע. |
פרמטר | שימוש | תיאור |
---|---|---|
title |
אופציונלי, מחרוזת |
כותרת ההתראה. |
body |
אופציונלי, מחרוזת |
הטקסט של גוף ההתראה. |
android_channel_id |
אופציונלי, מחרוזת |
מזהה הערוץ של ההתראה (חדש ב-Android O). האפליקציה חייבת ליצור ערוץ עם מזהה הערוץ הזה לפני שכל התראה עם מזהה הערוץ הזה התקבלו. אם לא שולחים בבקשה את מזהה הערוץ הזה, או אם מזהה הערוץ שסופק עדיין לא נשלח שנוצרה על ידי האפליקציה, FCM משתמשת במזהה הערוץ שצוין בקובץ המניפסט של האפליקציה. |
icon |
אופציונלי, מחרוזת |
הסמל של ההתראה.
הגדרה של סמל ההתראה כ- |
sound |
אופציונלי, מחרוזת |
הצליל שיושמע כשהמכשיר יקבל את ההתראה.
תמיכה ב- |
tag |
אופציונלי, מחרוזת |
המזהה שמשמש להחלפת ההתראות הקיימות בהתראה חלונית הזזה. אם לא מציינים זאת, כל בקשה יוצרת התראה חדשה. אם צוין והתראה עם אותו תג כבר נמצאת בתהליך ההתראה החדשה תחליף את ההתראה הקיימת חלונית הזזה להתראות. |
color |
אופציונלי, מחרוזת |
צבע סמל ההתראה, מבוטא בפורמט |
click_action |
אופציונלי, מחרוזת |
הפעולה שמשויכת לקליק של משתמש על ההתראה. אם צוין, פעילות עם מסנן Intent תואם תופעל כאשר משתמש לוחץ על ההתראה. |
body_loc_key |
אופציונלי, מחרוזת |
המפתח למחרוזת הגוף במשאבי המחרוזות של האפליקציה, שמשמש להתאמה של טקסט הגוף ללוקליזציה הנוכחית של המשתמש. למידע נוסף, ראו משאבי מחרוזות. |
body_loc_args |
מערך אופציונלי של JSON כמחרוזת |
ערכי מחרוזת משתנים שיש להשתמש בהם במקום מצייןי הפורמט
למידע נוסף, ראו עיצוב פורמטים. |
title_loc_key |
אופציונלי, מחרוזת |
המפתח למחרוזת הכותרת במשאבי המחרוזת של האפליקציה, שבו יש להשתמש כדי התאמה לשוק המקומי של טקסט הכותרת בהתאם לשוק המקומי הנוכחי של המשתמש. |
title_loc_args |
מערך אופציונלי של JSON כמחרוזת |
ערכי מחרוזת משתנים שיש להשתמש בהם במקום מצייןי הפורמט
צפייה עיצוב ועיצוב לקבלת מידע נוסף. |
פרמטר | שימוש | תיאור |
---|---|---|
title |
אופציונלי, מחרוזת |
כותרת ההתראה. |
body |
אופציונלי, מחרוזת |
הטקסט של גוף ההתראה. |
icon |
אופציונלי, מחרוזת |
כתובת ה-URL שבה צריך להשתמש עבור סמל ההתראה. |
click_action |
אופציונלי, מחרוזת |
הפעולה שמשויכת ללחיצה של משתמש על ההתראה. חובה להשתמש ב-HTTPS לכל הערכים של כתובות ה-URL. |
פירוש של תגובה להודעת XMPP במורד הזרם
הטבלה הבאה מפרטת את השדות שמופיעים בתגובה להודעת XMPP במורד הזרם.
פרמטר | שימוש | תיאור |
---|---|---|
from |
שדה חובה, מחרוזת | הפרמטר הזה מציין מי שלח את התשובה. הערך הוא אסימון הרישום של אפליקציית הלקוח. |
message_id |
שדה חובה, מחרוזת | הפרמטר הזה מזהה באופן ייחודי הודעה בחיבור XMPP. הערך הוא מחרוזת שמזהה באופן ייחודי את ההודעה המשויכת. |
message_type |
שדה חובה, מחרוזת | הפרמטר הזה מציין הודעת אם הערך מוגדר כ- |
error |
אופציונלי, מחרוזת | הפרמטר הזה מציין שגיאה שקשורה להודעת ה-downstream. מוגדר כאשר
message_type היא nack . פרטים נוספים זמינים בטבלה 4. |
error_description |
אופציונלי, מחרוזת | הפרמטר הזה מספק מידע תיאורי של השגיאה. הוא מוגדר כשהערך של message_type הוא nack . |
קודי תגובה של שגיאות בהודעות בהמשך
בטבלה הבאה מפורטים קודי התגובה של השגיאה בהודעות downstream.
שגיאה | קוד XMPP | הפעולה המומלצת |
---|---|---|
חסר אסימון רישום | INVALID_JSON |
בודקים שהבקשה מכילה אסימון רישום (בשדה registration_id בהודעת טקסט פשוט, או בשדה to או registration_ids ב-JSON). |
רישום נקודות APN לא תקין | INVALID_JSON |
לגבי רישומים ב-iOS, צריך לוודא שבקשת הרישום מהלקוח מכילה אסימון APN ומזהה אפליקציה תקינים. |
אסימון רישום לא חוקי | BAD_REGISTRATION |
בודקים את הפורמט של אסימון הרישום ששולחים לשרת. כדאי לוודא תואם לאסימון הרישום שאפליקציית הלקוח מקבלת במהלך הרישום ב-FCM. לא מומלץ לקצר או להוסיף תווים. |
מכשיר לא רשום | DEVICE_UNREGISTERED |
אסימון רישום קיים עשוי להפסיק להיות תקף במספר תרחישים, כולל:
|
שולח לא תואם | SENDER_ID_MISMATCH |
אסימון רישום מקושר לקבוצה מסוימת של שולחים. כשאפליקציית לקוח נרשמת עבור FCM, צריך לציין אילו שולחים מורשים לשלוח הודעות. עליך להשתמש באחד של מזהי השולחים האלה במהלך שליחת הודעות לאפליקציית הלקוח. אם עוברים לכתובת אחרת שולח, אסימוני הרישום הקיימים לא יעבדו. |
קובץ JSON לא תקין | INVALID_JSON |
בודקים שההודעה בפורמט JSON תקינה ושהיא מכילה שדות תקינים (למשל, מוודאים שסוג הנתונים הנכון מועבר). |
ההודעה גדולה מדי | INVALID_JSON |
צריך לבדוק שהגודל הכולל של נתוני המטען הייעודי (Payload) שכלולים בהודעה כן לא יחרגו מהמגבלות של FCM: 4,096 בייטים לרוב ההודעות או 2,048 בייטים במקרה של הודעות לנושאים. האיסור הזה כולל את המפתחות והערכים. |
מפתח נתונים לא חוקי | INVALID_JSON |
צריך לבדוק שנתוני המטען הייעודי (Payload) לא מכילים מפתח (למשל, from ,
gcm , או כל ערך אחר
התחילית של המאפיין הזה היא google ) שנמצא בשימוש פנימי על ידי FCM. יש לשים לב שיש מילים (כמו collapse_key )
משמשים גם את FCM, אבל הם מותרים במטען הייעודי (Payload), ובמקרה כזה
הערך של FCM מבטלים את ערך המטען הייעודי (Payload). |
אורך החיים לא חוקי | INVALID_JSON |
צריך לבדוק שהערך שנעשה בו שימוש ב-time_to_live הוא מספר שלם שמייצג
משך בשניות בין 0 ל-2,419,200 (4 שבועות). |
הודעת ACK שגויה | BAD_ACK |
צריך לבדוק שהפורמט של ההודעה ack תקין לפני שמנסים שוב. צפייה
טבלה 6 לפרטים נוספים. |
זמן קצוב לתפוגה | SERVICE_UNAVAILABLE |
השרת לא הצליח לעבד את הבקשה בזמן. לנסות שוב את אותה בקשה, אבל עליך:
הערה: שולחים שגורמים לבעיות עלולים להיכנס לרשימת החסימה. |
שגיאת שרת פנימית | INTERNAL_SERVER_
|
השרת נתקל בשגיאה במהלך הניסיון לעבד את הבקשה. אפשר לנסות שוב אותה בקשה בהתאם לדרישות המפורטות ב"זמן קצוב לתפוגה" (עיינו בשורה שלמעלה). |
חריגה מקצב ההודעות במכשיר | DEVICE_MESSAGE_RATE |
קצב ההודעות למכשיר מסוים גבוה מדי. מצמצמים את מספר ההודעות שנשלחו למכשיר הזה, ולא לנסות לשלוח אותו שוב למכשיר הזה באופן מיידי. |
חרגת מקצב ההודעות של הנושאים | TOPICS_MESSAGE_RATE |
שיעור ההודעות למנויים בנושא מסוים גבוה מדי. מצמצמים את מספר ההודעות שנשלחו בנושא הזה, ואל תנסה לשלוח אותו שוב באופן מיידי. |
ריקון החיבור | CONNECTION_DRAINING |
אי אפשר לעבד את ההודעה כי החיבור מתרוקן. הסיבה לכך היא: מדי פעם, FCM צריך לסגור את החיבור כדי לבצע איזון עומסים. ניסיון חוזר של ההודעה חיבור XMPP אחר. |
פרטי כניסה לא חוקיים של APN | INVALID_APNS_CREDENTIAL |
לא ניתן היה לשלוח הודעה שמטרגטת למכשיר iOS כי נקודות ה-APN הנדרשות מפתח האימות לא הועלה או שהתוקף שלו פג. איך לבדוק את תוקף הפיתוח ועל פרטי הכניסה לסביבת הייצור. |
Authentication Failed | AUTHENTICATION_FAILED |
האימות באמצעות שירותי דחיפה חיצוניים נכשל. בדוק אם אתה משתמש אישורי אינטרנט נכונים. |
תחביר ההודעות ב-upstream
הודעה ב-upstream היא הודעה שאפליקציית הלקוח שולחת לשרת האפליקציה. בשלב הזה רק XMPP תומך בהעברת הודעות בכיוון 'מעלה'. צפייה את התיעוד הרלוונטי לפלטפורמה שלכם מידע על שליחת הודעות מאפליקציות לקוח.
פרשנות של הודעת XMPP ב-upstream
הטבלה הבאה מתארת את השדות בבית ה-XMPP שנוצר על ידי FCM בתגובה לבקשות להצגת הודעות ב-upstream מאפליקציות של לקוח.
פרמטר | שימוש | תיאור |
---|---|---|
from |
שדה חובה, מחרוזת | הפרמטר הזה מציין מי שלח את ההודעה. הערך הוא אסימון הרישום של אפליקציית הלקוח. |
category |
חובה, מחרוזת | הפרמטר הזה מציין את שם החבילה של האפליקציה של אפליקציית הלקוח ששלחה את ההודעה. |
message_id |
שדה חובה, מחרוזת | הפרמטר הזה מציין את המזהה הייחודי של ההודעה. |
data |
אופציונלי, מחרוזת | הפרמטר הזה מציין את צמדי המפתח/ערך של המטען הייעודי (Payload) של ההודעה. |
שליחה של הודעת ACK
הטבלה הבאה מתארת את תגובת ה-ACK שאליה שרת האפליקציות צפוי לשלוח FCM בתגובה ל הודעת upstream ששרת האפליקציה קיבל.
פרמטר | שימוש | תיאור |
---|---|---|
to |
שדה חובה, מחרוזת | הפרמטר הזה מציין את הנמען של הודעת התשובה. הערך צריך להיות טוקן רישום של אפליקציית הלקוח ששלחה את ההודעה ב-upstream. |
message_id |
שדה חובה, מחרוזת | הפרמטר הזה מציין לאיזו הודעה התגובה מיועדת. הערך חייב להיות הערך של message_id מההודעה המתאימה ב-upstream. |
message_type |
שדה חובה, מחרוזת | הפרמטר הזה מציין הודעת ack משרת אפליקציות ל-CCS.
בהודעות מ-upstream, הערך צריך להיות תמיד ack . |
FCM הודעות שרת (XMPP)
זו הודעה שנשלחה מ-FCM לשרת אפליקציות. אלה הסוגים העיקריים של הודעות שFCM שולח לשרת האפליקציות:
- קבוצת בקרה: ההודעות האלה שנוצרו על ידי CCS מציינות נדרשת פעולה משרת האפליקציות.
בטבלה הבאה מתוארים השדות שכלולים בהודעות ש-CCS שולח לשרת האפליקציה.
פרמטר | שימוש | תיאור |
---|---|---|
שדה משותף | ||
message_type |
שדה חובה, מחרוזת | הפרמטר הזה מציין את הסוג של ההודעה: control. כשהערך מוגדר ל- |
control_type |
אופציונלי, מחרוזת | הפרמטר הזה מציין את הסוג של הודעת הבקרה שנשלחה מ-FCM. כרגע יש תמיכה רק ב- |