Envía mensajes ascendentes desde una app cliente de C++

Si el servidor de apps implementa el protocolo del servidor de conexiones de XMPP, puede recibir mensajes ascendentes del dispositivo del usuario a la nube. Para iniciar un mensaje ascendente, la app cliente envía una solicitud que contiene lo siguiente:

  • La dirección en formato SENDER_ID@fcm.googleapis.com del servidor de apps receptor
  • Un ID de mensaje que debe ser único para cada ID de remitente
  • Los datos del mensaje, que incluyen los pares clave-valor de la carga útil del mensaje

Cuando recibe estos datos, FCM crea una estrofa XMPP para enviar al servidor de apps y agrega información adicional acerca del dispositivo y la app emisores.

Envía un mensaje ascendente desde una app cliente de C++

Para enviar mensajes ascendentes al servidor, debes redactar un mensaje y llamar a Send en una app cliente de C++ de la siguiente manera:

::firebase::messaging::Message message;
message.to = SENDER_ID + "@fcm.googleapis.com";
message.message_id = get_unique_message_id();
message.data["my_message", "Hello World");
message.data["my_action", "SAY HELLO");
message.time_to_live = TIME_TO_LIVE;
::firebase::messaging::Send(message);

En el que:

  • message.to es la dirección en formato SENDER_ID@fcm.googleapis.com del servidor de apps receptor.

  • message.message_id es un identificador de mensaje único. Todas las devoluciones de llamadas del receptor de mensajes se identifican en la base de este ID de mensaje.

  • message.data es un mapa de claves y valores como strings.

  • message.time_to_live especifica el tiempo (en segundos) que se debe conservar el mensaje en el almacenamiento de FCM si el dispositivo se encuentra sin conexión. Si FCM no puede entregar el mensaje antes de que se cumpla el plazo de vencimiento, le envía una notificación al cliente.

La biblioteca cliente de FCM guarda en caché el mensaje en la app cliente y lo envía cuando el cliente tiene una conexión de servidor activa. Cuando recibe el mensaje, FCM lo envía al servidor de apps.

Recibe mensajes XMPP en el servidor de apps

Cuando FCM recibe una llamada de mensaje ascendente de una app cliente, genera la estrofa XMPP necesaria para enviar el mensaje ascendente. FCM agrega los campos category y from, y después envía una estrofa al servidor de apps como la que aparece a continuación:

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

Envía un mensaje ACK

Como respuesta a un mensaje ascendente como el anterior, el servidor de apps debe usar la misma conexión para enviar un mensaje ACK que contenga un ID de mensaje único. Si FCM no recibe un ACK, es posible que intente enviar el mensaje al servidor de apps nuevamente.

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to":"REGID",
      "message_id":"m-123"
      "message_type":"ack"
  }
  </gcm>
</message>

Consulta la referencia de servidores de conexión XMPP para obtener más información sobre la sintaxis de mensajes ascendentes.