Acompanhe tudo o que foi anunciado no Firebase Summit e saiba como usar o Firebase para acelerar o desenvolvimento de apps e executá-los com confiança. Saiba mais

Enviar mensagens upstream de um aplicativo cliente Unity

Se o seu servidor de aplicativos implementar o protocolo XMPP Connection Server , ele poderá receber mensagens upstream do dispositivo de um usuário para a nuvem. Para iniciar uma mensagem upstream, o aplicativo cliente envia uma solicitação contendo o seguinte:

  • O endereço do servidor de aplicativos de recebimento no formato SENDER_ID@fcm.googleapis.com .
  • Um ID de mensagem que deve ser exclusivo para cada ID de remetente .
  • Os dados da mensagem que compreendem os pares chave-valor da carga útil da mensagem.

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

Enviar uma mensagem upstream de um aplicativo cliente Unity

Para enviar mensagens upstream para o servidor, um aplicativo cliente 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 aplicativo receptor no formato SENDER_ID@fcm.googleapis.com .

  • message.MessageId é um identificador de mensagem exclusivo. Todos os retornos de chamada do receptor de mensagem são identificados com base nesse ID 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 offline. Se o FCM não puder entregar a mensagem antes que essa expiração seja alcançada, ele enviará uma notificação de volta ao cliente.

A biblioteca de cliente do FCM armazena em cache a mensagem no aplicativo cliente e a envia quando o cliente tem uma conexão de servidor ativa. Ao receber a mensagem, o FCM a envia ao servidor de aplicativos.

Receba mensagens XMPP no servidor de aplicativos

Quando o FCM recebe uma chamada de mensagem upstream de um aplicativo cliente, ele gera a estrofe XMPP necessária para enviar a mensagem upstream. O FCM adiciona os campos category e from e, em seguida, envia uma estrofe como a seguinte para o servidor de aplicativos:

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

Enviando uma mensagem ACK

Em resposta a uma mensagem upstream como a acima, o servidor de aplicativos deve usar a mesma conexão para enviar uma mensagem ACK contendo o ID exclusivo da mensagem. Se o FCM não receber um ACK, ele poderá tentar enviar novamente a mensagem para o servidor de aplicativos.

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

Consulte a Referência do Servidor de Conexão XMPP para obter mais informações sobre a sintaxe de mensagem upstream.