Catch up on everthing we announced at this year's Firebase Summit. Learn more

שלח הודעות לקבוצות מכשירים ב- Unity

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

אתה יכול להשתמש בהודעות קבוצת מכשיר דרך המורשית XMPP או HTTP פרוטוקולים בשרת האפליקציה שלך. Firebase Admin SDK עבור Node.js מבוסס על פרוטוקולי מורשתו גם לספק יכולות העברת הודעות קבוצתיות מכשיר. מספר החברים המרבי המותר למפתח הודעה הוא 20.

ניהול קבוצות מכשירים

לפני שליחת הודעות לקבוצת מכשירים, עליך:

  1. השג אסימוני רישום לכל מכשיר שברצונך להוסיף לקבוצה.

  2. צור את notification_key , אשר מזהה את קבוצת המכשיר ידי מיפוי קבוצה מסוימת (בדרך כלל משתמש) לכול אסימוני הרישום הנלווים של הקבוצה. תוכל ליצור מפתחות התראה בשרת האפליקציות.

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

ניהול קבוצות מכשירים בשרת האפליקציות

יצירת קבוצת מכשירים

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

בקשת HTTP POST

שלח בקשה כמו הבא כדי https://fcm.googleapis.com/fcm/notification :

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID

{
   "operation": "create",
   "notification_key_name": "appUser-Chris",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
                        "cR1rjyj4_Kc:APA91bGusqbypSuMdsh7jSNrW4nzsM...",
                        ... ]

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

פורמט תגובה

בקשה מוצלחת תחזיר notification_key כמו הבא:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

שמור את notification_key ואת המקביל notification_key_name לשימוש בפעולות הבאות.

אחזור מפתח הודעה

אם אתה צריך לשלוף מפתח הודעה קיים, להשתמש notification_key_name ב בקשת GET כמוצג:

https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID
{}

עבור כל בקשת GET לשם מפתח התראה נתון, השרת מחזיר מחרוזת מקודדת ייחודית. למרות שכל מחרוזת עשויה להיראות כמפתח אחר, היא למעשה ערך תקף של 'הודעה_קישור'.

הוספה והסרה של מכשירים מקבוצת מכשירים

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

בקשת HTTP POST

לדוגמה, כדי להוסיף מכשיר עם רישום אסימון bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... כדי appUser-Chris , היית שולח בקשה זו:

{
   "operation": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}

פורמט תגובה

בקשה מוצלחת להוספה או הסרה של התקן מחזירה notification_key כמו בדוגמה הבאה:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

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

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

בקשת HTTP POST של קבוצת מכשירים

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to": "aUniqueKey",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!",
   }
}

תגובת HTTP של קבוצת מכשירים

הנה דוגמא של "הצלחה" - את notification_key יש 2 אסימונים רישום הקשורים אליו, ואת ההודעה נשלחה בהצלחה לשניהם:

{
  "success": 2,
  "failure": 0
}

הנה דוגמא של "הצלחה חלקית" - את notification_key יש 3 רישום אסימוני המשויך אליו. ההודעה נשלחה בהצלחה לאחד מאסימוני הרישום בלבד. המסר בתגובת רשימות אסימוני הרישום ( registration_ids ) כי הצליחו לקבל את המסר:

{
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

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

אם השרת מנסה לשלוח הודעה לקבוצת מכשירים ללא חברים, התגובה נראית כדלקמן, עם 0 הצלחה ו -0 כישלון:

{
  "success": 0,
  "failure": 0
}

הודעת XMPP של קבוצת מכשירים

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to": "aUniqueKey",
      "message_id": "m-1366082849205" ,
      "data": {
          "hello":"This is a Firebase Cloud Messaging Device Group Message!"
      }
  }
  </gcm>
</message>

תגובת XMPP של קבוצת מכשירים

כאשר ההודעה נשלחת לכל אחד מהמכשירים בקבוצה בהצלחה, שרת חיבור XMPP מגיב באמצעות ACK. אם כל ההודעות שנשלחות לכל המכשירים בקבוצה נכשלות, שרת חיבור XMPP מגיב ב- NACK.

הנה דוגמא של "הצלחה" - את notification_key יש 3 אסימונים רישום הקשורים אליו, ואת ההודעה נשלחה בהצלחה לכולם:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success": 3,
  "failure": 0,
  "message_id": "m-1366082849205"
}

הנה דוגמא של "הצלחה חלקית" - את notification_key יש 3 רישום אסימוני המשויך אליו. ההודעה נשלחה בהצלחה לאחד מאסימוני הרישום בלבד. הודעת התשובה מפרטת את אסימוני הרישום שלא קיבלו את ההודעה:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

כאשר שרת חיבור ה- FCM לא מצליח לספק לכל המכשירים בקבוצה. שרת האפליקציות יקבל תשובה לא מדויקת.

לקבלת הרשימה המלאה של אפשרויות הודעה, רואה את מידע התייחסות פרוטוקול שרת החיבור שבחר, HTTP או XMPP .

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

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

השיחה הבאה ל- FCM שולחת הודעה במעלה הזרם למפתח התראה.

Firebase.Messaging.Message message;
message.To = notification_key;
message.MessageId = a_unique_message_id;
message.Data["hello"] = "world";
Firebase.Messaging.FirebaseMessaging.Send(message);