在 Android 上向裝置群組發送訊息

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

通知鍵允許的最大成員數為 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”值。

在設備組中添加和刪除設備

要在現有組中添加或刪除設備,請發送 POST 請求,並將operation參數設置為addremove ,並提供用於添加或刪除的註冊令牌。

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