Ir para o console

Receber mensagens em um app cliente do C++

Para receber mensagens downstream simples, é necessário que cada app cliente implemente os métodos na API firebase::messaging::Listener.

Inicializar o FCM

Você precisa inicializar o FCM para ter acesso ao token de registro ou receber mensagens.

Para inicializar o FCM, chame ::firebase::messaging::Initialize e forneça-o com seu objeto ::firebase::App, assim como 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 inicialização do aplicativo, o SDK do FCM gera um token de registro para a instância do aplicativo do cliente. Para segmentar dispositivos individuais ou criar grupos de dispositivos para o FCM, acesse esse token.

Acesse 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.
}

Como receber e gerenciar mensagens

Para receber mensagens, a classe "Listener" precisa implementar a função virtual OnMessage.

Modificar OnMessage

Ao modificar o método ::firebase::messaging::Listener::OnMessage, execute ações com base na mensagem recebida e acesse 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 de entrada. 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. Para diferenciar esses eventos especiais, basta verificar o campo Message::message_type.

Mensagens excluídas

São 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:

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

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

Evento de envio

É chamado quando uma mensagem upstream é enviada com sucesso para o servidor de conexão do FCM. Message::message_type será "send_event".

Erro de envio

É chamado quando há um erro ao enviar uma mensagem upstream. Message::message_type será "send_error".