Este guia descreve como configurar o Firebase Cloud Messaging nos seus apps cliente para dispositivos móveis e Web para que você possa receber mensagens de forma confiável.
Para receber mensagens downstream, cada app cliente precisa implementar os métodos na API firebase::messaging::Listener
.
Inicializar o FCM
Inicialize o FCM para ter acesso ao token de registro ou receber mensagens.
Para inicializar FCM, chame
::firebase::messaging::Initialize
e forneça a ele o objeto ::firebase::App
e uma implementação da classe
::firebase::messaging::Listener
.
MyListener my_listener_implementation;
::firebase::messaging::Initialize(app, &my_listener_implementation);
Acessar o token de registro
Na primeira inicialização do app, o SDK do FCM gera um token de registro para a instância do app cliente. Para segmentar dispositivos individuais ou criar grupos de dispositivos para o FCM, acesse esse token.
Você pode acessar o valor do token pela função virtual
::firebase::messaging::Listener::OnTokenReceived
.
void OnTokenReceived(const char* token) {
LogMessage("The registration token is `%s`", token);
// TODO: If necessary send token to application server.
}
Receber e processar mensagens
Para receber mensagens, a classe Listener precisa implementar a função virtual OnMessage
.
Substituir OnMessage
Ao modificar o método ::firebase::messaging::Listener::OnMessage
,
é possível realizar ações com base na mensagem recebida e acessar os dados
dela:
void OnMessage(const ::firebase::messaging::Message& message) {
LogMessage(TAG, "From: %s", message.from.c_str());
LogMessage(TAG, "Message ID: %s", message.message_id.c_str());
}
As mensagens podem representar diferentes tipos de dados recebidos. Geralmente, as mensagens são enviadas para o app após serem iniciadas pelo desenvolvedor. Elas também são enviadas ao seu app para representar eventos relacionados a mensagens enviadas, a erros de envio de mensagem e também a mensagens excluídas. Marque o campo Message::message_type
para diferenciar esses eventos especiais.
Mensagens excluídas
Enviadas para seu app quando o servidor do FCM exclui as mensagens pendentes.
Message::message_type
será "deleted_messages"
. As mensagens podem ser excluídas devido aos seguintes fatores:
Há muitas mensagens armazenadas no servidor do FCM.
Isso pode ocorrer quando os servidores de um app enviam muitas mensagens não recolhíveis para servidores do FCM enquanto o dispositivo está off-line.
O dispositivo ficou muito tempo sem se conectar, e o servidor do app enviou uma mensagem recentemente (nas últimas quatro semanas) ao app nesse dispositivo.
Recomenda-se que o app realize uma sincronização total com o servidor depois de receber essa chamada.