Catch up on highlights from Firebase at Google I/O 2023. Learn more

Отправка восходящих сообщений из клиентского приложения 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 .