Групповая рассылка сообщений позволяет добавлять несколько устройств в одну группу. Это похоже на рассылку сообщений по темам, но включает аутентификацию, гарантирующую, что управление членством в группе осуществляется только вашими серверами.
Например, если вы хотите отправлять разные сообщения на разные модели телефонов, ваши серверы могут добавлять или удалять регистрации в соответствующие группы и отправлять соответствующее сообщение каждой группе. Обмен сообщениями между группами устройств отличается от обмена сообщениями по темам тем, что он предполагает управление группами устройств с ваших серверов, а не непосредственно в вашем приложении.
Максимальное количество пользователей, которым можно назначить один ключ уведомления, составляет 20.
Управление группами устройств
Перед отправкой сообщений группе устройств необходимо:
- Получите регистрационные токены для каждого устройства, которое вы хотите добавить в группу.
- Создайте параметр
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 , вам нужно отправить следующий запрос:
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": "add",
"notification_key_name": "appUser-Chris",
"notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
"registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}
Формат ответа
Успешный запрос на добавление или удаление устройства возвращает notification_key следующего вида:
{ "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ" }
ключи управления группами устройств
В таблице ниже перечислены клавиши для создания групп устройств, а также для добавления и удаления участников.
| Параметр | Использование | Описание |
|---|---|---|
operation | Обязательный параметр, строка | Операция для выполнения. Допустимые значения: create , add и remove . |
notification_key_name | Обязательный параметр, строка | Заданное пользователем имя группы устройств для создания или изменения. |
notification_key | Обязательно (кроме операций create , строка) | Уникальный идентификатор группы устройств. Это значение возвращается в ответе на успешное create группы устройств и требуется для всех последующих операций с этой группой. |
registration_ids | Обязательный параметр: массив строк. | Токены устройств для добавления или удаления. Если вы удалите все существующие токены регистрации из группы устройств, FCM удалит эту группу устройств. |
Отправка сообщений группам устройств
Отправка сообщений группе устройств очень похожа на отправку сообщений отдельному устройству, используя тот же метод авторизации запросов на отправку . Установите поле 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
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