Si su servidor de aplicaciones implementa el protocolo del servidor de conexión XMPP , puede recibir mensajes ascendentes desde el dispositivo de un usuario a la nube. Para iniciar un mensaje ascendente, la aplicación cliente envía una solicitud que contiene lo siguiente:
- La dirección del servidor de la aplicación receptor en el formato
SENDER_ID@fcm.googleapis.com
. - Un ID de mensaje que debe ser único para cada ID de remitente .
- Los datos del mensaje que comprenden los pares clave-valor de la carga útil del mensaje.
Cuando recibe estos datos, FCM crea una estrofa XMPP para enviarla al servidor de aplicaciones, agregando información adicional sobre el dispositivo y la aplicación de envío.
Enviar un mensaje ascendente desde una aplicación cliente de Unity
Para enviar mensajes al servidor, una aplicación cliente de Unity redacta un mensaje y llama Send
como se muestra:
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);
dónde:
message.To
es la dirección del servidor de la aplicación receptor en el formatoSENDER_ID@fcm.googleapis.com
.message.MessageId
es un identificador de mensaje único. Todas las devoluciones de llamada del receptor de mensajes se identifican en función de este ID de mensaje.message.Data
es un mapa de claves y valores como cadenas.message.TimeToLive
especifica cuánto tiempo (en segundos) debe mantenerse el mensaje en el almacenamiento FCM si el dispositivo está fuera de línea. Si FCM no puede entregar el mensaje antes de que se alcance este vencimiento, envía una notificación al cliente.
La biblioteca cliente de FCM almacena en caché el mensaje en la aplicación cliente y lo envía cuando el cliente tiene una conexión de servidor activa. Al recibir el mensaje, FCM lo envía al servidor de aplicaciones.
Reciba mensajes XMPP en el servidor de aplicaciones
Cuando FCM recibe una llamada de mensajería ascendente desde una aplicación cliente, genera la estrofa XMPP necesaria para enviar el mensaje ascendente. FCM agrega los campos category
y from
, y luego envía una estrofa como la siguiente al servidor de aplicaciones:
<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>
Enviar un mensaje ACK
En respuesta a un mensaje ascendente como el anterior, el servidor de la aplicación debe usar la misma conexión para enviar un mensaje ACK que contenga el ID único del mensaje. Si FCM no recibe un ACK, puede volver a intentar enviar el mensaje al servidor de aplicaciones.
<message id=""> <gcm xmlns="google:mobile:data"> { "to":"REGID", "message_id":"m-123" "message_type":"ack" } </gcm> </message>
Consulte la Referencia del servidor de conexión XMPP para obtener más información sobre la sintaxis de mensajes ascendentes.