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

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

אפשר להוסיף מפתח התראות ל-20 אנשים לכל היותר.

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

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

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

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

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

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

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

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

בקשת HTTP POST

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

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
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
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
project_id:SENDER_ID
{}

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

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

כדי להוסיף מכשירים לקבוצה קיימת או להסיר אותם ממנה, צריך לשלוח הודעת 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"
}

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

בטבלה הבאה מפורטים המפתחות ליצירת קבוצות מכשירים ולצירוף והסרה של חברים.

טבלה 10. מפתחות ניהול של קבוצות מכשירים.

פרמטר שימוש תיאור
operation שדה חובה, מחרוזת הפעולה שיש להריץ.הערכים החוקיים הם create, add ו-remove.
notification_key_name שדה חובה, מחרוזת השם שהוגדר על ידי המשתמש של קבוצת המכשירים ליצירה או לשינוי.
notification_key חובה (למעט פעולה create, מחרוזת) המזהה הייחודי של קבוצת המכשירים. הערך הזה מוחזר בתגובה לפעולת create מוצלחת, והוא נדרש לכל הפעולות הבאות בקבוצת המכשירים.
registration_ids נדרש, מערך מחרוזות אסימוני המכשיר להוספה או להסרה. אם תסירו את כל אסימוני ההרשמה הקיימים מקבוצת מכשירים, מערכת FCM תמחק את קבוצת המכשירים.

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

כדי לשלוח הודעות לקבוצות מכשירים צריך להשתמש ב-HTTP v1 API. אם אתם שולחים כרגע לקבוצות של מכשירים באמצעות ממשקי ה-API הקודמים של HTTP או XMPP, או באמצעות אחת מהגרסאות הקודמות של Firebase Admin SDK ל-Node.js שמבוססות על הפרוטוקולים הקודמים, מומלץ מאוד לעבור ל-HTTP v1 API בהקדם האפשרי. ממשקי ה-API מהדור הקודם לשליחת הודעות יושבת ויוסרו ביוני 2024.

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

REST

POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1

Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA

{
   "message":{
      "token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
      "data":{
        "hello": "This is a Firebase Cloud Messaging device group message!"
      }
   }
}

פקודת cURL

curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"message":{
   "data":{
     "hello": "This is a Firebase Cloud Messaging device group message!"
   },
   "token":"APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send