Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Enviar mensagens upstream 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 do app de destino no formato SENDER_ID@fcm.googleapis.com;
  • Um ID da mensagem que deve ser exclusivo para cada ID 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 do Unity compõe uma mensagem e chama Send como mostrado:

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

onde:

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

  • message.MessageId é um identificador de mensagem exclusivo. 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 deve ser mantida no armazenamento do FCM se o dispositivo estiver 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, quando o cliente estabelece uma conexão ativa com o servidor, ela é enviada. Ao receber a mensagem, o FCM a envia para o servidor do app.

Receber mensagens XMPP no servidor do app

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

<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 ID 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 do servidor de conexão XMPP para mais informações sobre a sintaxe de mensagens upstream.