Google is committed to advancing racial equity for Black communities. See how.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Отправлять сообщения группам устройств в Интернете / JavaScript

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

Вы можете использовать обмен сообщениями между группами устройств через устаревшие протоколы XMPP или HTTP на сервере приложений. SDK Firebase Admin для Node.js, основанный на устаревших протоколах, также предоставляет возможности обмена сообщениями между группами устройств. Максимальное количество членов, разрешенное для ключа уведомления - 20.

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

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

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

  2. Создайте notification_key , который идентифицирует группу устройств, сопоставив определенную группу (обычно пользователя) со всеми связанными с ней регистрационными токенами. Вы можете создавать ключи уведомлений на сервере приложений или в клиентских приложениях Android.

Базовое управление группами устройств - создание и удаление групп, а также добавление или удаление устройств - обычно выполняется через сервер приложений. См. Справочник по устаревшему протоколу HTTP для получения списка поддерживаемых ключей.

При желании клиентские приложения Android могут управлять группами устройств со стороны клиента.

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

Создание группы устройств

Чтобы создать группу устройств, отправьте запрос POST, содержащий имя группы и список регистрационных токенов для устройств. FCM возвращает новый notification_key который представляет группу устройств.

HTTP POST запрос

Отправьте следующий запрос на https://fcm.googleapis.com/fcm/notification :

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID

{
   "operation": "create",
   "notification_key_name": "appUser-Chris",
   "registration_ids": ["4", "8", "15", "16", "23", "42"]
}

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
Authorization:key=API_KEY
project_id:SENDER_ID
{}

Для каждого запроса GET для данного имени ключа уведомления сервер возвращает уникальную закодированную строку. Хотя каждая строка может показаться отдельным ключом, на самом деле это действительное значение «notification_key».

Добавление и удаление устройств из группы устройств

Чтобы добавить или удалить устройства из существующей группы, отправьте запрос POST с параметром operation установленным для add или remove , и предоставьте маркеры регистрации для добавления или удаления.

HTTP POST запрос

Например, чтобы добавить устройство с регистрационным идентификатором 51 в appUser-Chris, вы должны отправить этот запрос:

{
   "operation": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["51"]
}

Формат ответа

Успешный запрос на добавление или удаление устройства возвращает notification_key как notification_key ниже:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

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

Отправка сообщений группе устройств очень похожа на отправку сообщений на отдельное устройство. Задайте to параметра to уникальный ключ уведомления для группы устройств. См. В разделе Типы сообщений подробную информацию о поддержке полезной нагрузки. Примеры на этой странице показывают, как отправлять сообщения с данными группам устройств по протоколам HTTP и XMPP.

HTTP-запрос POST группы устройств

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to": "aUniqueKey",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!",
   }
}

HTTP-ответ группы устройств

Вот пример «успеха» - с notification_key связано 2 регистрационных токена, и сообщение было успешно отправлено им обоим:

{
  "success": 2,
  "failure": 0
}

Вот пример «частичного успеха» - с notification_key связаны 3 регистрационных токена. Сообщение было успешно отправлено только на 1 из токенов регистрации. В ответном сообщении перечислены токены регистрации, которым не удалось получить сообщение:

{
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

Если сообщение не может быть доставлено одному или нескольким токенам регистрации, связанным с notification_key , сервер приложения должен повторить попытку с отсрочкой между попытками.

Если сервер пытается отправить сообщение группе устройств, у которой нет членов, ответ будет выглядеть следующим образом: 0 успехов и 0 ошибок:

{
  "success": 0,
  "failure": 0
}

Сообщение XMPP группы устройств

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to": "aUniqueKey",
      "message_id": "m-1366082849205" ,
      "data": {
          "hello":"This is a Firebase Cloud Messaging Device Group Message!"
      }
  }
  </gcm>
</message>

Ответ XMPP группы устройств

Когда сообщение успешно отправлено на любое из устройств в группе, сервер соединений XMPP отвечает ACK. Если все сообщения, отправленные на все устройства в группе, терпят неудачу, сервер соединений XMPP отвечает NACK.

Вот пример «успеха» - с notification_key связано 3 регистрационных токена, и сообщение было успешно отправлено всем им:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success": 3,
  "failure": 0,
  "message_id": "m-1366082849205"
}

Вот пример «частичного успеха» - с notification_key связаны 3 регистрационных токена. Сообщение было успешно отправлено только на 1 из токенов регистрации. В ответном сообщении перечислены токены регистрации, которым не удалось получить сообщение:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

Когда сервер соединений FCM не может доставить на все устройства в группе. Сервер приложений получит ответ Nack.

Полный список параметров сообщения см. В справочной информации для выбранного вами протокола сервера подключения, HTTP или XMPP .