Ir para o console

Enviar mensagens upstream a partir de um app cliente em C++

Se o servidor do app implementar o protocolo do servidor de conexão XMPP, ele poderá enviar mensagens upstream do dispositivo do usuário para a nuvem. Para iniciar essa mensagem, o app cliente envia uma solicitação contendo:

  • O endereço do servidor de aplicativos de destino no formato SENDER_ID@fcm.googleapis.com.
  • um código da mensagem que deve ser exclusivo para cada código do remetente;
  • os dados da mensagem, inclusive os pares de chave/valor do payload da mensagem.

Quando recebe esses dados, o FCM cria uma estrofe XMPP para enviar ao servidor do aplicativo, adicionando algumas informações adicionais sobre o dispositivo e o aplicativo de envio.

Enviar uma mensagem upstream de um aplicativo de cliente C++

Para enviar mensagens upstream ao servidor, um app cliente em C++ cria uma mensagem e chama Send, como mostrado abaixo:

::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);

Em que:

  • message.to é o endereço do servidor de aplicativos de destino no formato SENDER_ID@fcm.googleapis.com.

  • message.message_id é um identificador exclusivo da mensagem. Todas as chamadas de retorno do receptor da mensagem são identificadas com base nesse código de mensagem;

  • message.data é um mapa de chaves e valores como strings;

  • message.time_to_live especifica por quanto tempo (em segundos) a mensagem deve ser mantida no armazenamento do FCM se o dispositivo estiver off-line. Caso o FCM não consiga entregar a mensagem antes que ela expire, ele enviará uma notificação para o cliente.

A biblioteca de cliente do FCM armazena a mensagem no cache do app cliente e a envia quando o cliente estabelece uma conexão ativa com o servidor. Ao ser recebida no servidor de conexão do FCM, essa mensagem é enviada para o servidor de app.

Receber mensagens XMPP no servidor de app

Quando uma chamada de mensagem upstream de um app cliente é recebida no FCM, uma estrofe XMPP é gerada para enviar essa mensagem. Os campos category e from são adicionados pelo FCM, que envia uma estrofe como esta ao servidor de apps:

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

Como enviar mensagens ACK

No servidor do app, para responder a uma mensagem upstream como a mostrada acima, é necessário usar a mesma conexão para enviar uma ACK com o código exclusivo da mensagem. Se uma ACK não for recebida no FCM, ela será reenviada para o servidor do app.

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

Consulte Referência de servidor de conexão XMPP para mais informações sobre a sintaxe de mensagens upstream.