Отправка сообщений группам устройств

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

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

Максимальное количество пользователей, которым можно назначить один ключ уведомления, составляет 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 , вам нужно отправить следующий запрос:

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