פרוטוקול XMPP של העברת הודעות בענן ב-Firebase

במסמך הזה יש הפניה לתחביר ה-XMPP שמשמש להעברה הודעות בין שרת האפליקציה, אפליקציות הלקוח ו-Firebase Cloud Messaging (FCM). שרת האפליקציה צריך להתחבר לנקודות הקצה הבאות:

// Production
fcm-xmpp.googleapis.com:5235

// Testing
fcm-xmpp.googleapis.com:5236

הפרמטרים הזמינים האפשרויות נכללות בקטגוריות הבאות:

תחביר של הודעות במורד הזרם

בקטע הזה מצוין התחביר לשליחת הודעות במורד הזרם (downstream).

הודעות XMPP במורד הזרם (JSON)

בטבלה הבאה מפורטים היעדים, האפשרויות והמטען הייעודי (payload) של XMPP JSON. הודעות.

טבלה 1 יעדים, אפשרויות ומטען ייעודי (payload) להודעות XMPP במורד הזרם (JSON).

פרמטר שימוש תיאור
טירגוט
to אופציונלי, מחרוזת

הפרמטר הזה מציין את הנמען של ההודעה.

הערך יכול להיות טוקן רישום של מכשיר, מפתח התראות של קבוצת מכשירים או נושא יחיד (עם הקידומת /topics/). כדי לשלוח לכמה נושאים, משתמשים בפרמטר condition.

condition אופציונלי, מחרוזת

הפרמטר הזה מציין ביטוי לוגי של תנאים קובע את יעד ההודעה.

תנאי נתמך: נושא, בפורמט 'yourTopic' בנושאים". הערך הזה לא תלוי רישיות.

אופרטורים נתמכים: &&, ||. מקסימום שניים אופרטורים שנתמכים לכל נושא.

אפשרויות
message_id שדה חובה, מחרוזת

הפרמטר הזה מזהה באופן ייחודי הודעה בחיבור XMPP.

collapse_key אופציונלי, מחרוזת

הפרמטר הזה מזהה קבוצת הודעות (למשל, עם collapse_key: "Updates Available") שאפשר לכווץ, כך שרק ההודעה האחרונה תישלח כשהשליחה תתחדש. המטרה היא למנוע שליחת יותר מדי הודעות זהות כשהמכשיר חוזר לאינטרנט או יוצא ממצב שינה.

אין ערובה לסדר שבו ההודעות נשלחות.

הערה: בכל רגע נתון מותר להשתמש ב-4 מפתחות כיווץ שונים לכל היותר. כלומר FCM יכול לאחסן 4 קבצים שונים בו-זמנית הודעות לכל אפליקציית לקוח. אם גדול ממספר זה, אי אפשר להבטיח אילו 4 מפתחות כיווץ FCM יישמרו.

priority אופציונלי, מחרוזת

מגדיר את עדיפות ההודעה. הערכים החוקיים הם 'רגילים' ו-"high". בפלטפורמות של Apple, הן תואמות לעדיפויות 5 ו-10 של ה-APN.

כברירת מחדל, הודעות התראה נשלחות בעדיפות גבוהה והודעות נתונים נשלחים בעדיפות רגילה. עדיפות רגילה מבצעת אופטימיזציה של אפליקציית הלקוח צריכת הסוללה ויש להשתמש בה אלא אם נדרשת שליחה מיידית. כשמדובר בהודעות עם עדיפות רגילה, האפליקציה עשויה לקבל את ההודעה עם עיכוב לא מוגדר.

כאשר הודעה נשלחת בעדיפות גבוהה, היא נשלחת באופן מיידי, והאפליקציה יכול להציג התראה.

content_available אופציונלי, ערך בוליאני

בפלטפורמות של Apple, צריך להשתמש בשדה הזה כדי לייצג את content-available בנקודות ה-APN מטען ייעודי (payload). כשהתראה או הודעה נשלחת ומוגדרת ל-true, אפליקציית לקוח לא פעילה נמצאת במצב שינה, וההודעה נשלחת דרך נקודות APN במצב שקט ולא באמצעות FCM. שימו לב שהתראות שקטות לא מובטח שפריטי APN יתקבלו, והם עשויים להיות תלויים בגורמים כמו המשתמש הפעלת מצב סוללה חלשה, יציאה ידנית מהאפליקציה וכו'. ב-Android, הודעות נתונים מוציאות את המכשיר ממצב שינה כברירת מחדל. ב-Chrome, לא נתמכת כרגע.

mutable_content אופציונלי, ערך בוליאני של JSON

בפלטפורמות של Apple, משתמשים בשדה הזה כדי לייצג mutable-content במטען הייעודי (payload) של ה-APN. כששולחים התראה והערך הזה מוגדר ל-true, אפשר לשנות את תוכן ההתראה לפני שהיא מוצגת באמצעות תוסף לאפליקציית Notification Service. המערכת תתעלם מהפרמטר הזה ב-Android ובאינטרנט.

time_to_live אופציונלי, מספר

הפרמטר הזה מציין למשך כמה זמן (בשניות) ההודעה צריכה להישמר באחסון של FCM אם המכשיר במצב אופליין. משך החיים המקסימלי שנתמך הוא 4 שבועות, וערך ברירת המחדל הוא 4 שבועות. למידע נוסף, ראו הגדרת אורך החיים של הודעה.

dry_run אופציונלי, ערך בוליאני

כשהפרמטר הזה מוגדר ל-true, הוא מאפשר למפתחים לבדוק בלי לשלוח הודעה בפועל.

ערך ברירת המחדל הוא false.

מטען ייעודי (Payload)
data אופציונלי, אובייקט

הפרמטר הזה מציין את צמדי המפתח/ערך של המטען הייעודי (Payload) של ההודעה.

לדוגמה, עם data:{"score":"3x1"}:

בפלטפורמות של Apple, אם ההודעה נמסרת באמצעות נקודות APN, היא מייצגת את שדות הנתונים בהתאמה אישית. אם המיקום הוא נמסר על ידי FCM, הוא מיוצג כמילון של ערכי מפתח בAppDelegate application:didReceiveRemoteNotification:.

ב-Android, התוצאה תהיה תוספת Intent בשם score עם ערך המחרוזת 3x1.

המפתח לא יכול להיות מילה שמורה ('from', 'message_type' או כל מילה שמתחילה ב-) "google" או 'gcm'). לא להשתמש באף אחת מהמילים שהוגדרו בטבלה (למשל collapse_key).

מומלץ להשתמש בערכים בסוגי המחרוזת. עליכם להמיר ערכים באובייקטים או בסוגי נתונים אחרים שאינם מחרוזות (למשל, מספרים שלמים או ערכים בוליאניים) למחרוזת.

notification אופציונלי, אובייקט הפרמטר הזה מציין את צמדי המפתח/ערך הגלויים למשתמש שהוגדרו מראש מטען ייעודי (payload) של התראות. לפרטים נוספים, ראו תמיכה במטען ייעודי (payload) של התראות. אפשר לקבל מידע נוסף על אפשרויות של הודעות והתראות באמצעות נתונים, ראה סוגי הודעות. אם סופק מטען ייעודי (payload) של התראה, או האפשרות content_available מוגדרת ל-true עבור הודעה ל-Apple במכשיר, ההודעה נשלחת דרך נקודות APN, אחרת היא נשלחת באמצעות FCM

תמיכה בתוכן של ההתראות

הטבלאות הבאות מפרטות את הערכים המוגדרים מראש מפתחות שזמינים ליצירת הודעות התראה עבור פלטפורמות של Apple ו-Android.

טבלה 2a Apple — מקשים לקבלת התראות

פרמטר שימוש תיאור
title אופציונלי, מחרוזת

כותרת ההתראה.

השדה הזה לא מוצג בטלפונים ובטאבלטים.

body אופציונלי, מחרוזת

הטקסט של גוף ההתראה.

sound אופציונלי, מחרוזת

הצליל שיושמע כשהמכשיר יקבל את ההתראה.

מחרוזת שמציינת קובצי קול בחבילה הראשית של אפליקציית הלקוח או תיקייה אחת (Library/Sounds) של מאגר הנתונים של האפליקציה. לצפייה למידע נוסף בנושא ספריית המפתחים של iOS

badge אופציונלי, מחרוזת

ערך התג בסמל האפליקציה במסך הבית.

אם לא מציינים זאת, התג לא ישתנה.

אם המדיניות מוגדרת לערך 0, התג יוסר.

click_action אופציונלי, מחרוזת

הפעולה שמשויכת ללחיצה של משתמש על ההתראה.

תואם ל-category במטען הייעודי (payload) של ה-APN.

subtitle אופציונלי, מחרוזת

כותרת המשנה של ההתראה.

body_loc_key אופציונלי, מחרוזת

המפתח למחרוזת ה-body במשאבי המחרוזת של האפליקציה, שבו יש להשתמש כדי תרגום הטקסט בגוף הטקסט להתאמה לשוק המקומי הנוכחי של המשתמש.

תואם ל-loc-key במטען הייעודי (payload) של ה-APN.

צפייה סימוכין למפתחות מטען ייעודי (payload) וגם התאמת התוכן של ההתראות מרחוק מידע.

body_loc_args מערך אופציונלי של JSON כמחרוזת

ערכי מחרוזת משתנים שיש להשתמש בהם במקום מצייןי הפורמט body_loc_key לשימוש כדי להתאים את הטקסט בגוף הטקסט לבין ההתאמה לשוק המקומי של המשתמש.

תואם ל-loc-args במטען הייעודי (payload) של APNs.

צפייה סימוכין למפתחות מטען ייעודי (payload) וגם התאמת התוכן של ההתראות מרחוק מידע.

title_loc_key אופציונלי, מחרוזת

המפתח למחרוזת הכותרת במשאבי המחרוזת של האפליקציה, שבו יש להשתמש כדי התאמה לשוק המקומי של טקסט הכותרת בהתאם לשוק המקומי הנוכחי של המשתמש.

תואם ל-title-loc-key במטען הייעודי (payload) של ה-APN.

למידע נוסף, ראו מידע על מפתחות של נתוני עומס (payload) והתאמה של התוכן של ההתראות מרחוק לשוק המקומי.

title_loc_args מערך אופציונלי של JSON כמחרוזת

ערכים של מחרוזות משתנות שישמשו במקום מפרידי הפורמט ב-title_loc_key כדי להתאים את טקסט השם ללוקאל הנוכחי של המשתמש.

תואם ל-title-loc-args במטען הייעודי (payload) של ה-APN.

צפייה סימוכין למפתחות מטען ייעודי (payload) וגם התאמת התוכן של ההתראות מרחוק מידע.

טבלה 2ב. Android — מקשים לקבלת התראות

פרמטר שימוש תיאור
title אופציונלי, מחרוזת

כותרת ההתראה.

body אופציונלי, מחרוזת

הטקסט של גוף ההתראה.

android_channel_id אופציונלי, מחרוזת

מזהה הערוץ של ההתראה (חדש ב-Android O).

האפליקציה חייבת ליצור ערוץ עם מזהה הערוץ הזה לפני שכל התראה עם מזהה הערוץ הזה התקבלו.

אם לא שולחים בבקשה את מזהה הערוץ הזה, או אם מזהה הערוץ שסופק עדיין לא נשלח שנוצרה על ידי האפליקציה, FCM משתמשת במזהה הערוץ שצוין בקובץ המניפסט של האפליקציה.

icon אופציונלי, מחרוזת

הסמל של ההתראה.

הגדרה של סמל ההתראה כ-myicon עבור משאב שניתן להזזה myicon אם לא שולחים את המפתח הזה בבקשה, FCM מציג את סמל מרכז האפליקציות שצוין בקובץ המניפסט של האפליקציה.

sound אופציונלי, מחרוזת

הצליל שיושמע כשהמכשיר יקבל את ההתראה.

תמיכה ב-"default" או בשם הקובץ של משאב צליל בחבילה באפליקציה. קובצי קול חייבים להיות ב/res/raw/.

tag אופציונלי, מחרוזת

המזהה שמשמש להחלפת ההתראות הקיימות בהתראה חלונית הזזה.

אם לא מציינים זאת, כל בקשה יוצרת התראה חדשה.

אם צוין והתראה עם אותו תג כבר נמצאת בתהליך ההתראה החדשה תחליף את ההתראה הקיימת חלונית הזזה להתראות.

color אופציונלי, מחרוזת

צבע סמל ההתראה, מבוטא בפורמט #rrggbb.

click_action אופציונלי, מחרוזת

הפעולה שמשויכת לקליק של משתמש על ההתראה.

אם צוין, פעילות עם מסנן Intent תואם תופעל כאשר משתמש לוחץ על ההתראה.

body_loc_key אופציונלי, מחרוזת

המפתח למחרוזת הגוף במשאבי המחרוזות של האפליקציה, שמשמש להתאמה של טקסט הגוף ללוקליזציה הנוכחית של המשתמש.

למידע נוסף, ראו משאבי מחרוזות.

body_loc_args מערך אופציונלי של JSON כמחרוזת

ערכי מחרוזת משתנים שיש להשתמש בהם במקום מצייןי הפורמט body_loc_key לשימוש כדי להתאים את הטקסט בגוף הטקסט לבין ההתאמה לשוק המקומי של המשתמש.

למידע נוסף, ראו עיצוב פורמטים.

title_loc_key אופציונלי, מחרוזת

המפתח למחרוזת הכותרת במשאבי המחרוזת של האפליקציה, שבו יש להשתמש כדי התאמה לשוק המקומי של טקסט הכותרת בהתאם לשוק המקומי הנוכחי של המשתמש.

צפייה מידע נוסף זמין ב-String Resources.

title_loc_args מערך אופציונלי של JSON כמחרוזת

ערכי מחרוזת משתנים שיש להשתמש בהם במקום מצייןי הפורמט title_loc_key שמשמש להתאמת הטקסט של הכותרת לבין ההתאמה לשוק המקומי של המשתמש.

צפייה עיצוב ועיצוב לקבלת מידע נוסף.

טבלה 2ג. אינטרנט (JavaScript) — מקשים להודעות התראה

פרמטר שימוש תיאור
title אופציונלי, מחרוזת

כותרת ההתראה.

body אופציונלי, מחרוזת

הטקסט של גוף ההתראה.

icon אופציונלי, מחרוזת

כתובת ה-URL שבה צריך להשתמש עבור סמל ההתראה.

click_action אופציונלי, מחרוזת

הפעולה שמשויכת ללחיצה של משתמש על ההתראה.

חובה להשתמש ב-HTTPS לכל הערכים של כתובות ה-URL.

פירוש של תגובה להודעת XMPP במורד הזרם

הטבלה הבאה מפרטת את השדות שמופיעים בתגובה להודעת XMPP במורד הזרם.

טבלה 3 גוף התגובה של ה-XMPP של ההודעה במורד הזרם.

פרמטר שימוש תיאור
from שדה חובה, מחרוזת

הפרמטר הזה מציין מי שלח את התשובה.

הערך הוא אסימון הרישום של אפליקציית הלקוח.

message_id שדה חובה, מחרוזת הפרמטר הזה מזהה באופן ייחודי הודעה בחיבור XMPP. הערך הוא מחרוזת שמזהה באופן ייחודי את ההודעה המשויכת.
message_type שדה חובה, מחרוזת

הפרמטר הזה מציין הודעת ack או nack מ-FCM לשרת האפליקציה.

אם הערך מוגדר כ-nack, שרת האפליקציה צריך לבדוק את error ו-error_description כדי לקבל את פרטי התקלה.

error אופציונלי, מחרוזת הפרמטר הזה מציין שגיאה שקשורה להודעת ה-downstream. מוגדר כאשר message_type היא nack. פרטים נוספים זמינים בטבלה 4.
error_description אופציונלי, מחרוזת הפרמטר הזה מספק מידע תיאורי של השגיאה. הוא מוגדר כשהערך של message_type הוא nack.

קודי תגובה של שגיאות בהודעות בהמשך

בטבלה הבאה מפורטים קודי התגובה של השגיאה בהודעות downstream.

טבלה 4 קודי תגובות של שגיאות להודעות בהמשך הדרך.

שגיאה קוד XMPP הפעולה המומלצת
חסר אסימון רישום INVALID_JSON בודקים שהבקשה מכילה אסימון רישום (בשדה registration_id בהודעת טקסט פשוט, או בשדה to או registration_ids ב-JSON).
רישום נקודות APN לא תקין INVALID_JSON לגבי רישומים ב-iOS, צריך לוודא שבקשת הרישום מהלקוח מכילה אסימון APN ומזהה אפליקציה תקינים.
אסימון רישום לא חוקי BAD_REGISTRATION בודקים את הפורמט של אסימון הרישום ששולחים לשרת. כדאי לוודא תואם לאסימון הרישום שאפליקציית הלקוח מקבלת במהלך הרישום ב-FCM. לא מומלץ לקצר או להוסיף תווים.
מכשיר לא רשום DEVICE_UNREGISTERED אסימון רישום קיים עשוי להפסיק להיות תקף במספר תרחישים, כולל:
  • אם אפליקציית הלקוח מבטלת את הרישום ב-FCM.
  • הרישום של אפליקציית הלקוח מתבטל באופן אוטומטי, וזה יכול לקרות אם המשתמש מסיר את האפליקציה. לדוגמה, ב-iOS, אם נקודות APN דיווחת שאסימון ה-APNs לא תקין.
  • אם תוקף אסימון הרישום יפוג (לדוגמה, Google עשויה להחליט לרענן את הדף) אסימוני רישום או שהתוקף של אסימון ה-APNs פג עבור מכשירים).
  • אם אפליקציית הלקוח מתעדכנת, אבל הגרסה החדשה לא מוגדרת לקבל הודעות.
בכל המקרים האלה, יש להסיר את אסימון הרישום הזה מהאפליקציה ולהפסיק להשתמש בו כדי לשלוח הודעות.
שולח לא תואם 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

השרת לא הצליח לעבד את הבקשה בזמן. לנסות שוב את אותה בקשה, אבל עליך:

  • הטמעת השהיה מעריכית לפני ניסיון חוזר (exponential backoff) במנגנון הניסיונות החוזרים. (לדוגמה, אם המתינו שנייה אחת לפני הניסיון הראשון, צריך להמתין לפחות שתי שניות לפני הניסיון הבא, ואז ארבע שניות, וכן הלאה). אם אתם שולחים מספר הודעות, יש להשהות כל אחת בנפרד בסכום אקראי נוסף כדי להימנע משליחת בקשה חדשה לכל ההודעות בו-זמנית.
  • צריך להגדיר את ההשהיה הראשונית לניסיון חוזר לשנייה אחת.

הערה: שולחים שגורמים לבעיות עלולים להיכנס לרשימת החסימה.

שגיאת שרת פנימית INTERNAL_SERVER_
ERROR
השרת נתקל בשגיאה במהלך הניסיון לעבד את הבקשה. אפשר לנסות שוב אותה בקשה בהתאם לדרישות המפורטות ב"זמן קצוב לתפוגה" (עיינו בשורה שלמעלה).
חריגה מקצב ההודעות במכשיר DEVICE_MESSAGE_RATE
_EXCEEDED
קצב ההודעות למכשיר מסוים גבוה מדי. מצמצמים את מספר ההודעות שנשלחו למכשיר הזה, ולא לנסות לשלוח אותו שוב למכשיר הזה באופן מיידי.
חרגת מקצב ההודעות של הנושאים TOPICS_MESSAGE_RATE
_EXCEEDED
שיעור ההודעות למנויים בנושא מסוים גבוה מדי. מצמצמים את מספר ההודעות שנשלחו בנושא הזה, ואל תנסה לשלוח אותו שוב באופן מיידי.
ריקון החיבור CONNECTION_DRAINING אי אפשר לעבד את ההודעה כי החיבור מתרוקן. הסיבה לכך היא: מדי פעם, FCM צריך לסגור את החיבור כדי לבצע איזון עומסים. ניסיון חוזר של ההודעה חיבור XMPP אחר.
פרטי כניסה לא חוקיים של APN INVALID_APNS_CREDENTIAL לא ניתן היה לשלוח הודעה שמטרגטת למכשיר iOS כי נקודות ה-APN הנדרשות מפתח האימות לא הועלה או שהתוקף שלו פג. איך לבדוק את תוקף הפיתוח ועל פרטי הכניסה לסביבת הייצור.
Authentication Failed AUTHENTICATION_FAILED האימות באמצעות שירותי דחיפה חיצוניים נכשל. בדוק אם אתה משתמש אישורי אינטרנט נכונים.

תחביר ההודעות ב-upstream

הודעה ב-upstream היא הודעה שאפליקציית הלקוח שולחת לשרת האפליקציה. בשלב הזה רק XMPP תומך בהעברת הודעות בכיוון 'מעלה'. צפייה את התיעוד הרלוונטי לפלטפורמה שלכם מידע על שליחת הודעות מאפליקציות לקוח.

פרשנות של הודעת XMPP ב-upstream

הטבלה הבאה מתארת את השדות בבית ה-XMPP שנוצר על ידי FCM בתגובה לבקשות להצגת הודעות ב-upstream מאפליקציות של לקוח.

טבלה 5 הודעות XMPP ב-upstream.

פרמטר שימוש תיאור
from שדה חובה, מחרוזת

הפרמטר הזה מציין מי שלח את ההודעה.

הערך הוא אסימון הרישום של אפליקציית הלקוח.

category חובה, מחרוזת הפרמטר הזה מציין את שם החבילה של האפליקציה של אפליקציית הלקוח ששלחה את ההודעה.
message_id שדה חובה, מחרוזת הפרמטר הזה מציין את המזהה הייחודי של ההודעה.
data אופציונלי, מחרוזת הפרמטר הזה מציין את צמדי המפתח/ערך של המטען הייעודי (Payload) של ההודעה.

שליחה של הודעת ACK

הטבלה הבאה מתארת את תגובת ה-ACK שאליה שרת האפליקציות צפוי לשלוח FCM בתגובה ל הודעת upstream ששרת האפליקציה קיבל.

טבלה 6 תגובה להודעה של XMPP ב-upstream.

פרמטר שימוש תיאור
to שדה חובה, מחרוזת

הפרמטר הזה מציין את הנמען של הודעת התשובה.

הערך צריך להיות טוקן רישום של אפליקציית הלקוח ששלחה את ההודעה ב-upstream.

message_id שדה חובה, מחרוזת הפרמטר הזה מציין לאיזו הודעה התגובה מיועדת. הערך חייב להיות הערך של message_id מההודעה המתאימה ב-upstream.
message_type שדה חובה, מחרוזת הפרמטר הזה מציין הודעת ack משרת אפליקציות ל-CCS. בהודעות מ-upstream, הערך צריך להיות תמיד ack.

FCM הודעות שרת (XMPP)

זו הודעה שנשלחה מ-FCM לשרת אפליקציות. אלה הסוגים העיקריים של הודעות שFCM שולח לשרת האפליקציות:

  • קבוצת בקרה: ההודעות האלה שנוצרו על ידי CCS מציינות נדרשת פעולה משרת האפליקציות.

בטבלה הבאה מתוארים השדות שכלולים בהודעות ש-CCS שולח לשרת האפליקציה.

טבלה 7 הודעות בקרה FCM (XMPP).

פרמטר שימוש תיאור
שדה משותף
message_type שדה חובה, מחרוזת

הפרמטר הזה מציין את הסוג של ההודעה: control.

כשהערך מוגדר ל-control, ההודעה כוללת את הערך control_type כדי לציין את סוג הודעת הבקרה.

control_type אופציונלי, מחרוזת

הפרמטר הזה מציין את הסוג של הודעת הבקרה שנשלחה מ-FCM.

כרגע יש תמיכה רק ב-CONNECTION_DRAINING. הודעת הבקרה הזו תישלח על ידי FCM לפני שהוא סוגר חיבור כדי לבצע איזון עומסים. כשהחיבור מתרוקן, לא מקבלים יותר הודעות יכולים להישלח לחיבור, אבל הודעות קיימות בתוך צינור עיבוד הנתונים עדיין מתבצע עיבוד.