Empfangen Sie Nachrichten in einer C++-Client-App

Um einfache Downstream-Nachrichten zu empfangen, muss jede Client-App die Methoden der firebase::messaging::Listener -API implementieren.

FCM initialisieren

Bevor Sie FCM verwenden können, um auf Ihr Registrierungstoken zuzugreifen oder Nachrichten zu empfangen, muss es initialisiert werden.

Um FCM zu initialisieren, rufen Sie ::firebase::messaging::Initialize und stellen Sie ihm Ihr ::firebase::App Objekt sowie eine Implementierung der ::firebase::messaging::Listener Klasse zur Verfügung.

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

Greifen Sie auf das Registrierungstoken zu

Beim ersten Start Ihrer App generiert das FCM SDK ein Registrierungstoken für die Client-App-Instanz. Wenn Sie einzelne Geräte gezielt ansprechen oder Gerätegruppen für FCM erstellen möchten, müssen Sie auf dieses Token zugreifen.

Sie können über die virtuelle Funktion ::firebase::messaging::Listener::OnTokenReceived auf den Wert des Tokens zugreifen.

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

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

Nachrichten empfangen und bearbeiten

Um Nachrichten zu empfangen, muss Ihre Listener-Klasse die virtuelle Funktion OnMessage implementieren.

OnMessage überschreiben

Durch Überschreiben der Methode ::firebase::messaging::Listener::OnMessage können Sie Aktionen basierend auf der empfangenen Nachricht ausführen und die Nachrichtendaten abrufen:

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

Nachrichten können verschiedene Arten eingehender Daten darstellen. Am häufigsten werden Nachrichten an die App gesendet, nachdem sie vom Entwickler initiiert wurden. Nachrichten werden auch an Ihre App gesendet, um Ereignisse beim Senden von Nachrichten, Fehler beim Senden von Nachrichten und Ereignisse beim Löschen von Nachrichten darzustellen. Diese besonderen Ereignisse können durch Überprüfen des Feldes Message::message_type unterschieden werden.

Nachrichten gelöscht

Wird an Ihre App gesendet, wenn der FCM-Server ausstehende Nachrichten löscht. Message::message_type wird "deleted_messages" sein. Nachrichten können aus folgenden Gründen gelöscht werden:

  1. Zu viele Nachrichten auf dem FCM-Server gespeichert.

    Dies kann auftreten, wenn die Server einer App eine Reihe nicht reduzierbarer Nachrichten an FCM-Server senden, während das Gerät offline ist.

  2. Das Gerät war schon lange nicht mehr verbunden und der App-Server hat kürzlich (innerhalb der letzten 4 Wochen) eine Nachricht an die App auf diesem Gerät gesendet.

    Es wird empfohlen, dass die App nach Erhalt dieses Anrufs eine vollständige Synchronisierung mit dem App-Server durchführt.