Обмен сообщениями группы устройств позволяет добавлять несколько устройств в одну группу. Это похоже на обмен сообщениями в теме, но включает аутентификацию, чтобы гарантировать, что членство в группе управляется только вашими серверами. Например, если вы хотите отправлять разные сообщения на разные модели телефонов, ваши серверы могут добавлять/удалять регистрации в соответствующие группы и отправлять соответствующее сообщение каждой группе. Обмен сообщениями с группами устройств отличается от обмена сообщениями по темам тем, что он включает в себя управление группами устройств с ваших серверов, а не непосредственно в вашем приложении.
Максимальное количество участников, разрешенное для ключа уведомления, равно 20.
Управление группами устройств
Перед отправкой сообщений группе устройств необходимо:
Получите регистрационные токены для каждого устройства, которое вы хотите добавить в группу.
Создайте
notification_key
, который идентифицирует группу устройств, сопоставляя определенную группу (обычно пользователя) со всеми маркерами регистрации, связанными с группой. Вы можете создать ключи уведомлений на сервере приложений.
Базовое управление группами устройств — создание и удаление групп, а также добавление или удаление устройств — осуществляется через API HTTP v1 с использованием токенов с коротким сроком действия для авторизации запросов на отправку . Список поддерживаемых ключей см. в разделе Ключи управления группой устройств .
Управление группами устройств на сервере приложений
Создание группы устройств
Чтобы создать группу устройств, отправьте запрос POST с именем группы и списком токенов регистрации для устройств. FCM возвращает новый notification_key
, представляющий группу устройств.
POST-запрос HTTP
Отправьте запрос следующего вида на 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
, и предоставьте токены регистрации для добавления или удаления.
POST-запрос HTTP
Например, чтобы добавить устройство с токеном регистрации 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 удалит группу устройств. |
Отправка сообщений группам устройств
Чтобы отправлять сообщения группам устройств, используйте API HTTP v1. Если вы в настоящее время отправляете сообщения группам устройств, используя устаревшие API отправки для HTTP или XMPP или любую из более старых версий Firebase Admin SDK для Node.js на основе устаревших протоколов, мы настоятельно рекомендуем вам перейти на HTTP v1. API при первой же возможности. Устаревшие API отправки будут отключены и удалены в июне 2024 года.
Отправка сообщений группе устройств очень похожа на отправку сообщений отдельному устройству с использованием того же метода для авторизации запросов на отправку . Установите в поле 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