Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Envoyer des messages en amont depuis une application cliente Unity

Si votre serveur app met en œuvre la connexion XMPP serveur protocole, il peut recevoir des messages en amont de l'appareil d'un utilisateur dans le nuage. Pour lancer un message en amont, l'application cliente envoie une requête contenant les éléments suivants :

  • L'adresse du serveur d'applications de réception dans le format SENDER_ID@fcm.googleapis.com .
  • Un ID de message qui doit être unique pour chaque ID de l' 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 et l'application expéditeurs.

Envoyer un message en amont depuis une application cliente Unity

Pour envoyer des messages en amont du serveur, une application client Unity compose un message et appels 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'applications de réception dans le format SENDER_ID@fcm.googleapis.com .

  • message.MessageId est un identificateur 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 des clés et des valeurs sous forme de chaînes.

  • message.TimeToLive indique combien de temps (en secondes) doit être conservé le message dans le stockage FCM si l'appareil est en mode hors connexion. Si FCM ne peut pas remettre 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. À la 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 cliente, il génère la strophe XMPP nécessaire pour envoyer le message en amont. La FCM ajoute la category et from champs, et envoie ensuite une section comme suit au 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>

Envoi d'un message ACK

En réponse à un message en amont comme 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>

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