Envie 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 do aplicativo receptor 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 de valores-chave da carga útil da mensagem.

Ao receber 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 remetente.

Envie uma mensagem upstream de um aplicativo cliente Unity

Para enviar mensagens upstream para o servidor, um aplicativo cliente Unity redige uma mensagem e chama Send conforme 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 neste 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 FCM se o dispositivo estiver offline. Se o FCM não conseguir entregar a mensagem antes que essa expiração seja atingida, ele enviará uma notificação de volta ao cliente.

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

Receba mensagens XMPP no servidor de aplicativos

Quando o FCM recebe uma chamada de mensagens 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 ao servidor do aplicativo.

<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 da mensagem upstream.