Check out what’s new from Firebase at Google I/O 2022. Learn more

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

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

  • L'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 de 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 et l'application d'envoi.

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

Pour envoyer des messages en amont vers le serveur, une application cliente 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 identifiant de message.

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

  • message.TimeToLive spécifie combien de temps (en secondes) le message doit être conservé dans le stockage FCM si l'appareil est hors ligne. Si FCM ne peut pas livrer le message avant que cette expiration ne soit atteinte, il renvoie une notification au client.

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

Recevoir des messages XMPP sur le serveur d'application

Lorsque FCM reçoit un appel de messagerie en amont d'une application cliente, il génère la strophe XMPP nécessaire pour envoyer le message en amont. FCM ajoute la category et from champs de, 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 ci-dessus, 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'application.

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