在 C++ 上向設備群組發送訊息

設備群組訊息傳遞可讓您將多個裝置新增至單一群組。這與主題訊息傳遞類似,但包括身份驗證以確保群組成員資格僅由您的伺服器管理。例如,如果您想向不同的手機型號發送不同的訊息,您的伺服器可以新增/刪除對適當群組的註冊,並向每個群組發送適當的訊息。設備群組訊息傳遞與主題訊息傳遞的不同之處在於,它涉及從伺服器而不是直接在應用程式中管理設備群組。

通知鍵允許的最大成員數為 20。

管理設備組

在向設備群組發送訊息之前,您必須:

  1. 取得要新增至群組中的每個裝置的註冊令牌。

  2. 建立notification_key ,它透過將特定群組(通常是使用者)對應到該群組的所有關聯註冊令牌來標識裝置群組。您可以在應用程式伺服器上建立通知鍵。

設備群組的基本管理(建立和刪除群組以及新增或刪除裝置)是透過 HTTP v1 API 執行的,使用短期令牌來授權發送請求。有關支援的密鑰列表,請參閱設備群組管理密鑰

管理應用程式伺服器上的裝置群組

建立設備組

若要建立裝置群組,請傳送提供群組名稱以及裝置註冊令牌清單的 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_namenotification_key對於一組註冊令牌來說是唯一的。如果同一寄件者 ID有多個客戶端應用程序,則每個客戶端應用程式的notification_key_name都是唯一的,這一點很重要。這可確保訊息僅傳送至預期的目標應用程式。

回應格式

成功的請求會傳回一個notification_key ,如下所示:

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

儲存notification_key和對應的notification_key_name以供後續操作使用。

檢索通知密鑰

如果您需要檢索現有的通知金鑰,請在 GET 請求中使用notification_key_name如下所示:

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”值。

在設備群組中新增和刪除設備

若要從現有群組中新增或移除設備,請傳送operation參數設定為addremove POST 請求,並提供用於新增或刪除的註冊令牌。

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必填,字串要執行的操作。有效值為createaddremove
notification_key_name必填,字串若要建立或修改的設備群組的使用者定義名稱。
notification_key必填( create操作除外,字串設備組的唯一識別碼。該值在成功create操作的回應中傳回,並且是設備群組上的所有後續操作所必需的。
registration_ids必需,字串數組若要新增或刪除的設備令牌。如果您從裝置群組中刪除所有現有註冊令牌,FCM 會刪除該裝置群組。

向設備群組發送下游訊息

若要將訊息傳送到裝置群組,請使用 HTTP v1 API。如果您目前使用已棄用的 HTTP 或 XMPP 舊版發送 API 或任何基於舊版協定的適用於Node.js 的 Firebase 管理 SDK向設備群組發送數據,我們強烈建議您遷移到 HTTP v1儘早提供 API 。舊版發送 API 將於 2024 年 6 月停用並刪除。

向裝置群組發送訊息與向單一裝置發送訊息非常相似,使用相同的方法來授權發送請求。將token欄位設定為群組通知鍵:

休息

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 -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