Envoyer des messages en amont depuis une application cliente Unity

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

  • Adresse du serveur d'application de réception au format SENDER_ID@fcm.googleapis.com.
  • ID de message qui doit être unique pour chaque ID d'expéditeur.
  • 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'application, en ajoutant des informations supplémentaires sur l'appareil et l'application d'envoi.

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

Pour envoyer des messages en amont au serveur, une application cliente Unity compose un message et appelle Send, comme illustré ci-dessous :

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 destinataire au format SENDER_ID@fcm.googleapis.com.

  • message.MessageId est un identifiant de message unique. Tous les destinataires du message sont identifiés en fonction de cet ID de message.

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

  • message.TimeToLive spécifie la durée (en secondes) du message. conservé dans l'espace de stockage FCM si l'appareil est hors connexion. Si FCM ne peut pas distribuer le message avant l'expiration de ce délai, une la notification au client.

La bibliothèque cliente FCM met en cache le message dans l'application cliente et l'envoie lorsque le client a une connexion active au serveur. À la réception du message, FCM l'envoie au serveur d'applications.

Recevoir des messages XMPP sur le serveur de l'application

Lorsque FCM reçoit un appel de messagerie en amont d'une application cliente, il génère la strophe XMPP nécessaire à l'envoi du message en amont. FCM ajoute les champs category et from, puis envoie une comme suit sur le serveur d'applications:

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

Envoyer un message ACK

En réponse à un message en amont comme celui-ci, le serveur d'application doit utiliser la même connexion pour envoyer un message ACK contenant l'ID de message unique. Si FCM ne reçoit pas d'accusé de réception, 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 documentation de référence sur le serveur de connexion XMPP. pour en savoir plus sur la syntaxe des messages en amont.