Recibir mensajes en una aplicación cliente de C++

Para recibir mensajes posteriores simples, cada aplicación cliente debe implementar los métodos en la API firebase::messaging::Listener .

Inicializar FCM

Antes de poder utilizar FCM para obtener acceso a su token de registro o recibir mensajes, debe inicializarlo.

Para inicializar FCM, llame a ::firebase::messaging::Initialize y proporcione su objeto ::firebase::App , así como una implementación de la clase ::firebase::messaging::Listener .

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

Accede al token de registro

En el inicio inicial de su aplicación, el SDK de FCM genera un token de registro para la instancia de la aplicación cliente. Si desea apuntar a dispositivos individuales o crear grupos de dispositivos para FCM, deberá acceder a este token.

Puede acceder al valor del token a través de la función 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.
}

Recibir y manejar mensajes.

Para recibir mensajes, su clase Listener debe implementar la función virtual OnMessage .

Anular OnMessage en

Al anular el método ::firebase::messaging::Listener::OnMessage , puede realizar acciones basadas en el mensaje recibido y obtener los datos del mensaje:

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());
}

Los mensajes pueden representar diferentes tipos de datos entrantes. Lo más habitual es que los mensajes se envíen a la aplicación después de que el desarrollador los haya iniciado. Los mensajes también se envían a su aplicación para representar eventos de mensajes enviados, eventos de errores de envío de mensajes y eventos de mensajes eliminados. Estos eventos especiales se pueden diferenciar marcando el campo Message::message_type .

Mensajes eliminados

Enviado a su aplicación cuando el servidor FCM elimina mensajes pendientes. Message::message_type será "deleted_messages" . Los mensajes pueden eliminarse debido a:

  1. Demasiados mensajes almacenados en el servidor FCM.

    Esto puede ocurrir cuando los servidores de una aplicación envían una serie de mensajes no plegables a los servidores FCM mientras el dispositivo está desconectado.

  2. El dispositivo no se ha conectado en mucho tiempo y el servidor de la aplicación recientemente (en las últimas 4 semanas) envió un mensaje a la aplicación en ese dispositivo.

    Se recomienda que la aplicación realice una sincronización completa con el servidor de aplicaciones después de recibir esta llamada.