Invia messaggi upstream da un'app client Unity

Se il tuo server app implementa il protocollo XMPP Connection Server , può ricevere messaggi upstream dal dispositivo di un utente al cloud. Per avviare un messaggio upstream, l'app client invia una richiesta contenente quanto segue:

  • L'indirizzo del server dell'app ricevente nel formato SENDER_ID@fcm.googleapis.com .
  • Un ID messaggio che deve essere univoco per ciascun ID mittente .
  • I dati del messaggio che comprendono le coppie chiave-valore del payload del messaggio.

Quando riceve questi dati, FCM crea una stanza XMPP da inviare al server delle applicazioni, aggiungendo alcune informazioni aggiuntive sul dispositivo e sull'app di invio.

Invia un messaggio upstream da un'app client Unity

Per inviare messaggi upstream al server, un'app client Unity compone un messaggio e chiama Send come mostrato:

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

Dove:

  • message.To è l'indirizzo del server dell'app ricevente nel formato SENDER_ID@fcm.googleapis.com .

  • message.MessageId è un identificatore di messaggio univoco. Tutte le richiamate del destinatario del messaggio vengono identificate sulla base di questo ID messaggio.

  • message.Data è una mappa di chiavi e valori come stringhe.

  • message.TimeToLive specifica per quanto tempo (in secondi) il messaggio deve essere conservato nell'archivio FCM se il dispositivo è offline. Se FCM non è in grado di consegnare il messaggio prima che venga raggiunta questa scadenza, invia una notifica al client.

La libreria client FCM memorizza nella cache il messaggio sull'app client e lo invia quando il client ha una connessione al server attiva. Alla ricezione del messaggio, FCM lo invia al server dell'app.

Ricevi messaggi XMPP sul server dell'app

Quando FCM riceve una chiamata di messaggistica upstream da un'applicazione client, genera la stanza XMPP necessaria per inviare il messaggio upstream. FCM aggiunge i campi category e from , quindi invia una stanza come la seguente al server delle applicazioni:

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

Invio di un messaggio ACK

In risposta a un messaggio upstream come quello precedente, il server app deve utilizzare la stessa connessione per inviare un messaggio ACK contenente l'ID messaggio univoco. Se FCM non riceve un ACK, potrebbe riprovare a inviare il messaggio al server dell'app.

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

Per ulteriori informazioni sulla sintassi dei messaggi upstream, consultare la documentazione di riferimento del server di connessione XMPP .