Envoyer des messages en amont à partir d'une application client Unity

Si votre serveur d'applications implémente le protocole XMPP Connection Server , il peut recevoir des messages en amont depuis l'appareil d'un utilisateur vers le cloud. Pour lancer un message en amont, l'application client envoie une requête contenant les éléments suivants :

  • Adresse du serveur d'application de réception au format SENDER_ID@fcm.googleapis.com .
  • Un ID de message qui doit être unique pour chaque ID d'expéditeur .
  • Les données du message comprenant les paires clé-valeur de la charge utile du message.

Lorsqu'il reçoit ces données, FCM crée une strophe XMPP à envoyer au serveur d'applications, en ajoutant des informations supplémentaires sur l'appareil émetteur et l'application.

Envoyer un message en amont à partir d'une application client Unity

Pour envoyer des messages en amont au serveur, une application client Unity compose un message et appelle Send comme indiqué :

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

où:

  • message.To est l'adresse du serveur d'application de réception au format SENDER_ID@fcm.googleapis.com .

  • message.MessageId est un identifiant de message unique. Tous les rappels du destinataire du message sont identifiés sur la base de cet ID de message.

  • message.Data est une carte de clés et de valeurs sous forme de chaînes.

  • message.TimeToLive spécifie la durée (en secondes) pendant laquelle le message doit être conservé dans le stockage FCM si l'appareil est hors ligne. Si FCM ne peut pas transmettre le message avant cette expiration, il renvoie une notification au client.

La bibliothèque client FCM met en cache le message sur l'application client et l'envoie lorsque le client dispose d'une connexion serveur active. Dès réception du message, FCM l'envoie au serveur d'applications.

Recevoir des messages XMPP sur le serveur d'applications

Lorsque FCM reçoit un appel de messagerie en amont d'une application client, il génère la strophe XMPP nécessaire pour envoyer le message en amont. FCM ajoute les champs category et from , puis envoie une strophe comme celle-ci au serveur d'application :

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

Envoi d'un message ACK

En réponse à un message en amont comme celui ci-dessus, le serveur d'applications doit utiliser la même connexion pour envoyer un message ACK contenant l'ID de message unique. Si FCM ne reçoit pas d'ACK, il peut réessayer d'envoyer le message au serveur d'applications.

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

Consultez la référence du serveur de connexion XMPP pour plus d'informations sur la syntaxe des messages en amont.