Receber mensagens em um aplicativo cliente C++

Para receber mensagens downstream simples, cada aplicativo cliente precisa implementar os métodos na API firebase::messaging::Listener .

Inicializar FCM

Antes de poder usar o FCM para obter acesso ao seu token de registro ou receber mensagens, ele deve ser inicializado.

Para inicializar o FCM, chame ::firebase::messaging::Initialize e forneça a ele seu objeto ::firebase::App , bem como uma implementação da classe ::firebase::messaging::Listener .

MyListener my_listener_implementation;
::firebase::messaging::Initialize(app, &my_listener_implementation);

Acesse o token de registro

Na inicialização do seu aplicativo, o SDK do FCM gera um token de registro para a instância do aplicativo cliente. Se quiser direcionar dispositivos únicos ou criar grupos de dispositivos para FCM, você precisará acessar esse token.

Você pode acessar o valor do token por meio da 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 tratar mensagens

Para receber mensagens, sua classe Listener deve implementar a função virtual OnMessage .

Substituir OnMessage

Ao substituir o método ::firebase::messaging::Listener::OnMessage , você pode executar ações com base na mensagem recebida e obter os dados da mensagem:

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. Mais comumente, as mensagens são enviadas ao aplicativo após serem iniciadas pelo desenvolvedor. As mensagens também são enviadas ao seu aplicativo para representar eventos de envio de mensagens, eventos de erro de envio de mensagens e eventos de mensagens excluídas. Esses eventos especiais podem ser diferenciados verificando o campo Message::message_type .

Mensagens excluídas

Enviado para seu aplicativo quando o servidor FCM exclui mensagens pendentes. Message::message_type será "deleted_messages" . As mensagens podem ser excluídas devido a:

  1. Muitas mensagens armazenadas no servidor FCM.

    Isso pode ocorrer quando os servidores de um aplicativo enviam um monte de mensagens não recolhíveis para servidores FCM enquanto o dispositivo está offline.

  2. O dispositivo não se conecta há muito tempo e o servidor do aplicativo enviou recentemente (nas últimas quatro semanas) uma mensagem para o aplicativo nesse dispositivo.

    Recomenda-se que o aplicativo faça uma sincronização completa com o servidor do aplicativo após receber esta chamada.