Отправка сообщений группам устройств через Интернет/JavaScript.

Групповые сообщения устройств позволяют добавлять несколько устройств в одну группу. Это похоже на отправку сообщений по темам, но включает аутентификацию, гарантирующую, что членство в группах управляется только вашими серверами. Например, если вы хотите отправлять разные сообщения на разные модели телефонов, ваши серверы могут добавлять/удалять регистрации в соответствующих группах и отправлять каждой группе соответствующее сообщение. Групповые сообщения устройств отличаются от тематических сообщений тем, что управление группами устройств осуществляется с ваших серверов, а не непосредственно в вашем приложении.

Максимальное количество участников, разрешенное для ключа уведомления, составляет 20.

Управление группами устройств

Перед отправкой сообщений группе устройств необходимо:

  1. Получите регистрационные токены для каждого устройства, которое вы хотите добавить в группу.

  2. Создайте ключ 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