Nachrichten in C++-Apps empfangen

Plattform auswählen : iOS+ Android Web Flutter Unity C++


Damit Client-Apps Downstream-Nachrichten empfangen können, müssen sie 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 dazu FCMauf ::firebase::messaging::Initialize und geben Sie Ihr ::firebase::App Objekt sowie eine Implementierung der ::firebase::messaging::Listener Klasse an.

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 Registrierungs token für die Client-App-Instanz. Wenn Sie einzelne Geräte ansprechen oder Gerätegruppen für FCM erstellen möchten, müssen Sie auf dieses Token zugreifen.

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

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

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

Nachrichten empfangen und verarbeiten

Damit Ihre Listener-Klasse Nachrichten empfangen kann, muss sie die OnMessage virtuelle Funktion 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. Nachrichten werden auch an Ihre App gesendet, um Ereignisse wie „Nachricht gesendet“, „Fehler beim Senden der Nachricht“ und „Nachrichten gelöscht“ darzustellen. Diese speziellen 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 ist dann "deleted_messages". Nachrichten können aus folgenden Gründen gelöscht werden:

  1. Zu viele Nachrichten auf dem FCM Server gespeichert.

    Das kann passieren, wenn die Server einer App eine Reihe von nicht reduzierbaren Nachrichten an 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 vier Wochen) eine Nachricht an die App auf diesem Gerät gesendet.

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