Отправка сообщений группам устройств на 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_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