設備組消息傳遞允許您將多個設備添加到單個組中。這與主題消息傳遞類似,但包括身份驗證以確保組成員資格僅由您的服務器管理。例如,如果您想向不同的手機型號發送不同的消息,您的服務器可以添加/刪除對適當組的註冊,並向每個組發送適當的消息。設備組消息傳遞與主題消息傳遞的不同之處在於,它涉及從服務器而不是直接在應用程序中管理設備組。
通知鍵允許的最大成員數為 20。
管理設備組
在向設備組發送消息之前,您必須:
獲取要添加到組中的每個設備的註冊令牌。
創建
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_name
和notification_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
參數設置為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 會刪除該設備組。 |
向設備組發送消息
要將消息發送到設備組,請使用 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