Zum Empfangen einfacher nachgelagerter Nachrichten muss jede Clientanwendung die Methoden in der firebase::messaging::Listener
API implementieren.
FCM initialisieren
Bevor du mit FCM auf dein Registrierungstoken zugreifen oder Nachrichten empfangen kannst, muss es initialisiert werden.
Rufen Sie ::firebase::messaging::Initialize
auf, um FCM zu initialisieren, und übergeben Sie ihm Ihr ::firebase::App
-Objekt sowie eine Implementierung der Klasse ::firebase::messaging::Listener
.
MyListener my_listener_implementation; ::firebase::messaging::Initialize(app, &my_listener_implementation);
Auf das Registrierungstoken zugreifen
Beim ersten Starten Ihrer App generiert das FCM SDK ein Registrierungstoken für die Client-App-Instanz. Wenn Sie auf einzelne Geräte oder Gerätegruppen für FCM ausrichten 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
Damit Nachrichten empfangen werden können, muss Ihre Listener-Klasse die virtuelle Funktion OnMessage
implementieren.
OnMessage
überschreiben
Wenn Sie die Methode ::firebase::messaging::Listener::OnMessage
überschreiben, 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, Fehler beim Senden von Nachrichten und gelöschte Nachrichten zu repräsentieren. Diese speziellen Ereignisse können durch das Ankreuzen 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
ist "deleted_messages"
. Nachrichten können aus folgenden Gründen gelöscht werden:
Auf dem FCM-Server sind zu viele Nachrichten gespeichert.
Das kann passieren, wenn die Server einer App eine Reihe nicht minimierbarer Nachrichten an FCM-Server senden, während das Gerät offline ist.
Das Gerät war schon lange nicht mehr verbunden und der App-Server hat vor Kurzem (innerhalb der 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.