אם שרת האפליקציות שלך מיישם את פרוטוקול XMPP Connection Server , הוא יכול לקבל הודעות במעלה הזרם מהמכשיר של משתמש לענן. כדי ליזום הודעה במעלה הזרם, אפליקציית הלקוח שולחת בקשה המכילה את הדברים הבאים:
- הכתובת של שרת האפליקציות המקבל בפורמט
SENDER_ID@fcm.googleapis.com
. - מזהה הודעה שצריך להיות ייחודי עבור כל מזהה שולח .
- נתוני ההודעה הכוללים את צמדי המפתח-ערך של מטען ההודעה.
כשהיא מקבלת נתונים אלה, FCM בונה בית XMPP לשליחה לשרת האפליקציה, ומוסיפה מידע נוסף על המכשיר והאפליקציה השולחים.
שלח הודעה במעלה הזרם מאפליקציית לקוח של Unity
כדי לשלוח הודעות במעלה הזרם לשרת, אפליקציית לקוח של Unity מחברת הודעה וקוראת Send
כמוצג:
Firebase.Messaging.Message message;
message.To = SENDER_ID + "@fcm.googleapis.com";
message.MessageId = get_unique_message_id();
message.Data("my_message", "Hello World");
message.Data("my_action", "SAY HELLO");
message.TimeToLive = kTimetoLive;
Firebase.Messaging.FirebaseMessaging.Send(message);
איפה:
message.To
היא הכתובת של שרת האפליקציה המקבל בפורמטSENDER_ID@fcm.googleapis.com
.message.MessageId
הוא מזהה הודעה ייחודי. כל ההתקשרות חזרה למקבלי ההודעות מזוהות על בסיס מזהה הודעה זה.message.Data
היא מפה של מפתחות וערכים כמחרוזות.message.TimeToLive
מציין כמה זמן (בשניות) ההודעה צריכה להישמר באחסון FCM אם המכשיר לא מקוון. אם FCM לא יכול להעביר את ההודעה לפני שתפוג זה מגיע, הוא שולח הודעה בחזרה ללקוח.
ספריית הלקוח של FCM מאחסנת את ההודעה באפליקציית הלקוח ושולחת אותה כאשר ללקוח יש חיבור שרת פעיל. עם קבלת ההודעה, FCM שולח אותה לשרת האפליקציה.
קבל הודעות XMPP בשרת האפליקציות
כאשר FCM מקבל שיחת הודעות במעלה הזרם מאפליקציית לקוח, היא מייצרת את בית ה-XMPP הדרוש לשליחת ההודעה במעלה הזרם. FCM מוסיף את category
והשדות from
, ולאחר מכן שולח בית כמו הבא לשרת האפליקציה:
<message id=""> <gcm xmlns="google:mobile:data"> { "category":"com.example.yourapp", // to know which app sent it "data": { "hello":"world", }, "message_id":"m-123", "from":"REGID" } </gcm> </message>
שולח הודעת ACK
בתגובה להודעה במעלה הזרם כמו לעיל, שרת האפליקציה חייב להשתמש באותו חיבור כדי לשלוח הודעת ACK המכילה את מזהה ההודעה הייחודי. אם FCM לא מקבל ACK, הוא עשוי לנסות לשלוח שוב את ההודעה לשרת האפליקציה.
<message id=""> <gcm xmlns="google:mobile:data"> { "to":"REGID", "message_id":"m-123" "message_type":"ack" } </gcm> </message>
עיין ב- XMPP Connection Server Reference למידע נוסף על תחביר הודעות במעלה הזרם.