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