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

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

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

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

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

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

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

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

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

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

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

Чтобы создать группу устройств, отправьте запрос 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": "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 не может доставить на все устройства в группе. Сервер приложений получит ответ «нет».

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

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

Клиентские приложения могут отправлять сообщения вверх по течению к группам устройств путем ориентации сообщения соответствующего ключа уведомления в to поле.

Следующий вызов FCM отправляет восходящее сообщение на ключ уведомления.

Firebase.Messaging.Message message;
message.To = notification_key;
message.MessageId = a_unique_message_id;
message.Data["hello"] = "world";
Firebase.Messaging.FirebaseMessaging.Send(message);