Invia messaggi upstream da un'app client Unity

Se il server dell'app implementa 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 di destinazione nel formato SENDER_ID@fcm.googleapis.com.
  • Un ID messaggio che deve essere univoco per ogni 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 dell'app, aggiungendo alcune informazioni aggiuntive sul dispositivo e sull'app di invio.

Invia un messaggio upstream da un'app client Unity

Per inviare messaggi a monte 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 app di destinazione nel formato SENDER_ID@fcm.googleapis.com.

  • message.MessageId è un identificatore univoco di un messaggio. Tutti i destinatari del messaggio vengono identificati in base a questo ID messaggio.

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

  • message.TimeToLive specifica la durata (in secondi) del messaggio conservati in FCM di spazio di archiviazione se il dispositivo è offline. Se FCM non riesce a consegnare il messaggio prima del raggiungimento di questa scadenza, invia nuovamente una notifica al cliente.

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

Ricevere messaggi XMPP sul server dell'app

Quando FCM riceve una chiamata di messaggistica upstream da un'app client, genera la stanza XMPP necessaria per l'invio del messaggio upstream. FCM aggiunge i campi category e from, quindi invia al server dell'app una stanza come la seguente:

<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 riportato sopra, il server dell'app deve utilizzare la stessa connessione per inviare un messaggio di 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>

Consulta la documentazione di riferimento sui server di connessione XMPP. per ulteriori informazioni sulla sintassi dei messaggi upstream.