Nachrichten über eine C++-Client-App empfangen

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.

Rufen Sie ::firebase::messaging::Initialize auf, um FCM zu initialisieren, und stellen Sie das ::firebase::App-Objekt sowie eine Implementierung der Klasse ::firebase::messaging::Listener bereit.

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

Auf das Registrierungstoken zugreifen

Beim ersten Start Ihrer App generiert das FCM SDK ein Registrierungstoken für die Client-App-Instanz. Wenn Sie einzelne Geräte als Zielgruppe festlegen oder Gerätegruppen für FCM erstellen möchten, benötigen Sie dieses Token.

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

Damit Nachrichten empfangen werden können, muss Ihre Listener-Klasse die virtuelle Funktion OnMessage implementieren.

Überschreiben OnMessage

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 von eingehenden Daten darstellen. In den meisten Fällen werden Nachrichten an die App gesendet, nachdem sie vom Entwickler initiiert wurden. Außerdem werden Nachrichten an Ihre App gesendet, um Ereignisse für gesendete Nachrichten, Fehlerereignisse für gesendete Nachrichten und Ereignisse für gelöschte Nachrichten darzustellen. Diese besonderen Ereignisse können durch Überprüfen des Felds 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. Auf dem FCM-Server sind zu viele Nachrichten gespeichert.

    Das kann passieren, wenn die Server einer App eine Reihe von nicht minimierbaren Nachrichten an die FCM-Server senden, während das Gerät offline ist.

  2. Das Gerät hat sich seit längerer Zeit nicht mehr verbunden und der App-Server hat vor Kurzem (in den letzten 4 Wochen) eine Nachricht an die App auf diesem Gerät gesendet.

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