Wysyłaj wiadomości nadrzędne z aplikacji klienckiej Unity

Jeśli serwer aplikacji implementuje protokół serwera połączeń XMPP , może odbierać wiadomości nadrzędne z urządzenia użytkownika do chmury. Aby zainicjować wiadomość nadrzędną, aplikacja kliencka wysyła żądanie zawierające następujące informacje:

  • Adres serwera aplikacji odbierającej w formacie SENDER_ID@fcm.googleapis.com .
  • Identyfikator wiadomości, który powinien być unikalny dla każdego identyfikatora nadawcy .
  • Dane komunikatu zawierające pary klucz-wartość ładunku komunikatu.

Po otrzymaniu tych danych FCM tworzy sekcję XMPP, którą należy wysłać do serwera aplikacji, dodając dodatkowe informacje o urządzeniu wysyłającym i aplikacji.

Wyślij wiadomość nadrzędną z aplikacji klienckiej Unity

Aby wysłać wiadomości w górę do serwera, aplikacja kliencka Unity tworzy wiadomość i wywołuje opcję Send , jak pokazano:

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);

Gdzie:

  • message.To to adres serwera aplikacji odbierającej w formacie SENDER_ID@fcm.googleapis.com .

  • message.MessageId to unikalny identyfikator wiadomości. Wszystkie wywołania zwrotne odbiorcy wiadomości są identyfikowane na podstawie tego identyfikatora wiadomości.

  • message.Data to mapa kluczy i wartości w postaci ciągów znaków.

  • message.TimeToLive określa, jak długo (w sekundach) wiadomość powinna być przechowywana w pamięci FCM, jeśli urządzenie jest w trybie offline. Jeśli FCM nie może dostarczyć wiadomości przed upływem tego terminu, wysyła powiadomienie z powrotem do klienta.

Biblioteka klienta FCM buforuje komunikat w aplikacji klienckiej i wysyła go, gdy klient ma aktywne połączenie z serwerem. Po odebraniu wiadomości FCM wysyła ją do serwera aplikacji.

Odbieraj wiadomości XMPP na serwerze aplikacji

Gdy FCM odbierze połączenie nadrzędne z aplikacji klienckiej, generuje niezbędną sekcję XMPP do wysłania komunikatu nadrzędnego. FCM dodaje pola category i from , a następnie wysyła do serwera aplikacji następującą sekcję:

<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>

Wysyłanie wiadomości ACK

W odpowiedzi na wiadomość nadrzędną, taką jak powyższa, serwer aplikacji musi użyć tego samego połączenia, aby wysłać wiadomość ACK zawierającą unikalny identyfikator wiadomości. Jeśli FCM nie otrzyma potwierdzenia, może ponowić próbę wysłania wiadomości do serwera aplikacji.

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

Więcej informacji na temat składni komunikatów nadrzędnych można znaleźć w dokumentacji serwera połączeń XMPP .