Обмен сообщениями в группе устройств позволяет добавить несколько устройств в одну группу. Это похоже на обмен сообщениями по темам, но включает аутентификацию, чтобы гарантировать, что управление участием в группах осуществляется только вашими серверами.
Например, если вы хотите отправлять разные сообщения на разные модели телефонов, ваши серверы могут добавлять или удалять регистрации в нужных группах и отправлять соответствующее сообщение каждой группе. Групповая отправка сообщений на устройства отличается от отправки сообщений в темы тем, что управление группами устройств осуществляется с ваших серверов, а не непосредственно в приложении.
Максимальное количество участников ключа уведомлений – 20.
Как управлять группами устройств
Прежде чем отправлять сообщения группе устройств, необходимо:
- Получите токены регистрации для каждого устройства, которое хотите добавить в группу.
- Создайте
notification_key, который идентифицирует группу устройств, сопоставляя определенную группу (обычно пользователя) со всеми связанными с ней токенами регистрации. Ключи уведомлений можно создать на сервере приложения.
Базовое управление группами устройств, например создание и удаление групп, а также добавление и удаление устройств, выполняется с помощью HTTP API версии 1 с использованием токенов с коротким сроком действия для авторизации отправки запросов. Список поддерживаемых ключей приведен в разделе Ключи управления группами устройств.
Как управлять группами устройств на сервере приложений
Как создать группу устройств
Чтобы создать группу устройств, отправьте запрос 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.
Получение FCM токенов для групп устройств
Если вам нужно получить токены FCM, принадлежащие группе устройств, используйте параметр
notification_key в GET-запросе, как показано ниже:
https://fcm.googleapis.com/fcm/notification?notification_key=APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ
Content-Type:application/json
access_token_auth: true
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
project_id:SENDER_ID
{}
Ответ будет выглядеть так:
{
"notification_key_name": "appUser-Chris",
"registration_ids": ["token1", "token2"]
}
Как добавлять и удалять устройства из группы устройств
Чтобы добавить или удалить устройства из существующей группы, отправьте запрос 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 ключ уведомления группы:
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