Ir para o console

Enviar mensagens upstream a partir de um app cliente do Unity

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.

Ao receber esses dados, uma estrofe XMPP é criada no FCM para ser enviada ao servidor de apps, acrescentando outras informações sobre o app e o dispositivo remetente.

Enviar mensagens upstream de um app cliente Unity

Para enviar mensagens upstream ao servidor, um app cliente Unity compõe uma mensagem e chama Send da seguinte forma:

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

Em que:

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

  • message.MessageId é 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.TimeToLive especifica por quanto tempo, em segundos, a mensagem precisa ser mantida no armazenamento do FCM se o dispositivo está off-line. Caso o FCM não consiga entregar a mensagem antes de ela expirar, ele envia uma notificação de volta ao 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 do 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 do app:

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