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

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

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

אתה יכול להשתמש בהודעות קבוצת מכשיר דרך המורשית 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 לא מצליח לספק לכל המכשירים בקבוצה. שרת האפליקציה יקבל תגובת nack.

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

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

כדי לשלוח הודעות upstream לקבוצות התקן על האפליקציות של אפל, לצרכי יישום לקוח אפל ליישם FIRMessaging.sendMessage :

(void)sendMessage:(nonnull NSDictionary *)message
     to:(nonnull NSString *)receiver
withMessageID:(nonnull NSString *)messageID
timeToLive:(int64_t)ttl;