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

Отправлять восходящие сообщения из клиентского приложения Unity

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

  • Адрес получающего сервера приложения в формате SENDER_ID@fcm.googleapis.com .
  • Идентификатор сообщения, который должен быть уникальным для каждого идентификатора отправителя .
  • Данные сообщения, содержащие пары ключ-значение полезной нагрузки сообщения.

Получив эти данные, FCM создает раздел XMPP для отправки на сервер приложений, добавляя некоторую дополнительную информацию об отправляющем устройстве и приложении.

Отправка восходящего сообщения из клиентского приложения Unity

Чтобы отправить сообщения восходящему потоку на сервер, клиентское приложение Unity составляет сообщение и вызывает Send как показано ниже:

Firebase.Messaging.Message message;
message.To = SENDER_ID + "@fcm.googleapis.com";
message.MessageId = get_unique_message_id();
message.Data["my_message", "Hello World");
message.Data["my_action", "SAY HELLO");
message.TimeToLive = kTimetoLive;
Firebase.Messaging.FirebaseMessaging.Send(message);

куда:

  • message.To - адрес принимающего сервера приложения в формате SENDER_ID@fcm.googleapis.com .

  • message.MessageId - уникальный идентификатор сообщения. Все обратные вызовы получателя сообщения идентифицируются на основе этого идентификатора сообщения.

  • message.Data - это карта ключей и значений в виде строк.

  • message.TimeToLive указывает, как долго (в секундах) сообщение должно храниться в хранилище FCM, если устройство отключено. Если FCM не может доставить сообщение до истечения этого срока, он отправляет уведомление клиенту.

Клиентская библиотека FCM кэширует сообщение в клиентском приложении и отправляет его, когда у клиента есть активное соединение с сервером. Получив сообщение, сервер соединений FCM отправляет его на сервер приложений.

Получать сообщения XMPP на сервере приложений

Когда FCM получает вызов восходящего обмена сообщениями от клиентского приложения, он генерирует необходимую строфу XMPP для отправки восходящего сообщения. FCM добавляет поля category и from , а затем отправляет на сервер приложений строфу, подобную приведенной ниже:

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "category":"com.example.yourapp", // to know which app sent it
      "data":
      {
          "hello":"world",
      },
      "message_id":"m-123",
      "from":"REGID"
  }
  </gcm>
</message>

Отправка сообщения ACK

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

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to":"REGID",
      "message_id":"m-123"
      "message_type":"ack"
  }
  </gcm>
</message>

Для получения дополнительной информации о синтаксисе восходящего сообщения см. Справочник по серверу соединений XMPP .