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 lancer un message en amont, l'application cliente envoie une requête contenant les éléments suivants:
- Adresse du serveur d'application destinataire 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 formatSENDER_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 un mappage 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 l'espace de stockage FCM si l'appareil est hors connexion. Si FCM ne peut pas transmettre le message avant cette expiration, il renvoie une notification au client.
La bibliothèque cliente FCM met en cache le message dans 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 de l'application.
Recevoir des messages XMPP sur le serveur de l'application
Lorsque FCM reçoit un appel de messagerie en amont à partir d'une application cliente, 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 semblable à 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>
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'acquittement, 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>
Pour en savoir plus sur la syntaxe des messages en amont, consultez la documentation de référence du serveur de connexion XMPP.