Recibe mensajes en una app cliente de C++

Para recibir mensajes descendentes simples, cada app cliente debe implementar los métodos en la API firebase::messaging::Listener.

Inicializa FCM

Debes inicializar FCM para acceder al token de registro o recibir mensajes.

Para inicializar FCM, llama a ::firebase::messaging::Initialize y proporciónale el 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

Cuando se inicia la app por primera vez, el SDK de FCM genera un token de registro para la instancia de la app cliente. Necesitarás acceder a este token si tu objetivo son los dispositivos individuales o si quieres crear grupos de dispositivos para FCM.

Puedes acceder al valor del token mediante 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.
}

Recibe y maneja mensajes

Para recibir mensajes, tu clase de agente de escucha debe implementar la función virtual OnMessage.

Anula OnMessage

Si anulas el método ::firebase::messaging::Listener::OnMessage, puedes ejecutar acciones según 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. Por lo general, los mensajes se envían a la app después de que el desarrollador los inicia. También se envían mensajes a tu app para representar eventos de mensajes enviados, de error de envío de mensajes y de mensajes borrados. Revisa el campo Message::message_type para reconocer estos eventos especiales.

Mensajes borrados

Se envían a tu app cuando el servidor FCM borra los mensajes pendientes. Message::message_type será "deleted_messages". Los mensajes pueden borrarse en los siguientes casos:

  1. Demasiados mensajes almacenados en el servidor FCM.

    Esto puede ocurrir cuando los servidores de una app envían varios mensajes no contraíbles a los servidores FCM mientras el dispositivo está sin conexión.

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

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

Evento de envío

Se llama cuando un mensaje ascendente se envía correctamente al servidor de conexiones de FCM. Message::message_type será "send_event".

Error de envío

Se llama cuando se produce un error de envío de un mensaje ascendente. Message::message_type será "send_error".

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.