Recevoir des messages dans une application cliente C++

Pour recevoir des messages en aval simples, chaque application cliente doit implémenter les méthodes de l'API firebase::messaging::Listener.

Initialiser FCM

Avant de pouvoir utiliser FCM pour accéder à votre jeton d'enregistrement ou recevoir des messages, vous devez l'initialiser.

Pour initialiser FCM, appelez ::firebase::messaging::Initialize et fournissez-lui votre objet ::firebase::App ainsi qu'une implémentation de la classe ::firebase::messaging::Listener.

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

Accéder au jeton d'enregistrement

Au démarrage initial de votre application, le SDK FCM génère un jeton d'enregistrement pour l'instance de l'application cliente. Si vous souhaitez cibler des appareils individuels ou créer des groupes d'appareils pour FCM, vous devez accéder à ce jeton.

Vous pouvez accéder à la valeur du jeton via la fonction virtuelle ::firebase::messaging::Listener::OnTokenReceived.

void OnTokenReceived(const char* token) {
  LogMessage("The registration token is `%s`", token);

  // TODO: If necessary send token to application server.
}

Recevoir et gérer les messages

Pour recevoir des messages, votre classe Listener doit implémenter la fonction virtuelle OnMessage.

Ignorer OnMessage

En remplaçant la méthode ::firebase::messaging::Listener::OnMessage, vous pouvez effectuer des actions en fonction du message reçu et obtenir les données du message:

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

Les messages peuvent représenter différents types de données entrantes. Le plus souvent, les messages sont envoyés à l'application après avoir été initiés par le développeur. Des messages sont également envoyés à votre application pour représenter les événements d'envoi de messages, les événements d'erreur d'envoi de messages et les événements de suppression de messages. Vous pouvez différencier ces événements spéciaux en vérifiant le champ Message::message_type.

Messages supprimés

Envoyée à votre application lorsque le serveur FCM supprime les messages en attente. Message::message_type sera "deleted_messages". Les messages peuvent être supprimés pour les raisons suivantes:

  1. Trop de messages stockés sur le serveur FCM.

    Cela peut se produire lorsque les serveurs d'une application envoient un grand nombre de messages non réductibles aux serveurs FCM lorsque l'appareil est hors connexion.

  2. L'appareil ne s'est pas connecté depuis longtemps, et le serveur de l'application a récemment (au cours des quatre dernières semaines) envoyé un message à l'application sur cet appareil.

    Nous vous recommandons de procéder à une synchronisation complète avec le serveur d'application après avoir reçu cet appel.