Групповые сообщения устройств позволяют добавлять несколько устройств в одну группу. Это похоже на отправку сообщений по темам, но включает аутентификацию, гарантирующую, что членство в группах управляется только вашими серверами. Например, если вы хотите отправлять разные сообщения на разные модели телефонов, ваши серверы могут добавлять/удалять регистрации в соответствующих группах и отправлять каждой группе соответствующее сообщение. Групповые сообщения устройств отличаются от тематических сообщений тем, что управление группами устройств осуществляется с ваших серверов, а не непосредственно в вашем приложении.
Максимальное количество участников, разрешенное для ключа уведомления, составляет 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
, вы должны отправить следующий запрос:
{
"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 удалит эту группу устройств. |
Отправка нисходящих сообщений группам устройств
Отправка сообщений группе устройств очень похожа на отправку сообщений на отдельное устройство, используя тот же метод авторизации запросов на отправку . Установите поле 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