Firebase Cloud Messaging

Firebase Cloud Messaging (FCM) ist ein Dienst, der das Messaging zwischen mobilen Apps und Serveranwendungen erleichtert. Dieser Artikel bietet eine Übersicht über die Funktionsweise von FCM und erläutert, wie Sie Google Services konfigurieren, damit Ihre App FCM verwenden kann.

Hero-Image für Firebase Cloud Messaging

Dieses Thema enthält eine allgemeine Übersicht über die Weiterleitung von Nachrichten zwischen Ihrer Xamarin Android-App und einem App-Server durch Firebase Cloud Messaging. Außerdem erhalten Sie eine Schritt-für-Schritt-Anleitung zum Abrufen von Anmeldeinformationen, damit Ihre App die Dienstprinzipalnamen verwenden kann.

Übersicht

Firebase Cloud Messaging (FCM) ist ein plattformübergreifender Dienst, der das Senden, Routing und Warteschlangen von Nachrichten zwischen Serveranwendungen und mobilen Client-Apps übernimmt. FCM ist der Nachfolger von Google Cloud Messaging (GCM) und basiert auf Google Play Services.

Wie im folgenden Diagramm dargestellt, fungiert FCM als Vermittler zwischen Nachrichtensendern und Clients. Eine Client-App ist eine FCM-fähige App, die auf einem Gerät ausgeführt wird. Der App-Server (von Ihnen oder Ihrem Unternehmen bereitgestellt) ist der FCM-fähige Server, mit dem Ihre Client-App über FCM kommuniziert. Im Gegensatz zu GCM ermöglicht FCM das direkte Senden von Nachrichten an Client-Apps über die Benutzeroberfläche für Benachrichtigungen der Firebase-Konsole:

FCM befindet sich zwischen der Client-App und einem App-Server.

Mithilfe von FCM können App-Server Nachrichten an ein einzelnes Gerät, an eine Gruppe von Geräten oder an eine Reihe von Geräten senden, die ein Thema abonniert haben. Eine Client-App kann FCM verwenden, um nachgeschaltete Nachrichten von einem App-Server zu abonnieren (z. B. zum Empfangen von Remotebenachrichtigungen). Weitere Informationen zu den verschiedenen Arten von Firebase-Nachrichten finden Sie unter Informationen zu FCM-Nachrichten.

Firebase Cloud Messaging in Aktion

Wenn eine Downstreamnachricht von einem App-Server an eine Client-App gesendet wird, sendet der App-Server die Nachricht an einen FCM-Verbindungs Server, der von Google bereitgestellt wird. Der FCM-Verbindungsserver leitet die Nachricht seinerseits an ein Gerät weiter, auf dem die Client-App ausgeführt wird. Nachrichten können über HTTP oder XMPP (erweiterbares Messaging- und Anwesenheitsprotokoll) gesendet werden. Da Client-Apps nicht immer verbunden sind oder ausgeführt werden, werden vom FCM-Verbindungsserver Nachrichten in die Warteschlange eingereiht und gespeichert, und sie werden an Client-apps gesendet, wenn sie wieder eine Verbindung herstellen. Ebenso fügt FCM Upstreamnachrichten aus der Client-App an den App-Server in die Warteschlange ein, wenn der App-Server nicht verfügbar ist. Weitere Informationen zu den FCM-Verbindungsservern finden Sie unter Informationen zu Firebase Cloud Messaging Server.

FCM verwendet die folgenden Anmeldeinformationen, um den App-Server und die Client-App zu identifizieren, und verwendet diese Anmeldeinformationen, um Nachrichtentransaktionen über FCM zu autorisieren:

  • Absender-ID : Die Absender-ID ist ein eindeutiger numerischer Wert, der zugewiesen wird, wenn Sie Ihr Firebase-Projekt erstellen. Die Absender-ID wird verwendet, um jeden App-Server zu identifizieren, der Nachrichten an die Client-App senden kann. Die Absender-ID ist auch Ihre Projektnummer; Sie erhalten die Absender-ID aus der Firebase-Konsole, wenn Sie Ihr Projekt registrieren. Ein Beispiel für eine Absender-ID ist 496915549731.

  • API-Schlüssel : Der API-Schlüssel gewährt dem App-Server Zugriff auf Firebase-Dienste. FCM verwendet diesen Schlüssel, um den App-Server zu authentifizieren. Diese Anmeldeinformationen werden auch als Serverschlüssel oder Web-API-Schlüssel bezeichnet. Ein Beispiel für einen API-Schlüssel ist AJzbSyCTcpfRT1YRqbz-jIwp1h06YdauvewGDzk.

  • App-ID : Die Identität Ihrer Client-App (unabhängig von einem bestimmten Gerät), die sich registriert, um Nachrichten von FCM zu empfangen. Ein Beispiel für eine App-ID ist 1:415712510732:android:0e1eb7a661af2460.

  • Registrierungstoken : Das Registrierungstoken (auch als Instanz-ID bezeichnet) ist die FCM-Identität Ihrer Client-App auf einem bestimmten Gerät. Das Registrierungstoken wird zur Laufzeit generiert. Ihre App empfängt ein Registrierungstoken, wenn sie sich zum ersten Mal bei FCM registriert, während sie auf einem Gerät ausgeführt wird. Das Registrierungstoken autorisiert eine instance Ihrer Client-App (die auf diesem bestimmten Gerät ausgeführt wird) zum Empfangen von Nachrichten von FCM. Ein Beispiel für ein Registrierungstoken ist fkBQTHxKKhs:AP91bHuEedxM4xFAUn0z ... JKZS (eine sehr lange Zeichenfolge).

Das Einrichten von Firebase Cloud Messaging (weiter unten in diesem Handbuch) enthält ausführliche Anweisungen zum Erstellen eines Projekts und zum Generieren dieser Anmeldeinformationen. Wenn Sie ein neues Projekt in der Firebase-Konsole erstellen, wird eine Anmeldeinformationsdatei namens google-services.json erstellt. Fügen Sie diese Datei Ihrem Xamarin.Android-Projekt hinzu, wie unter Remotebenachrichtigungen mit FCM erläutert.

In den folgenden Abschnitten wird erläutert, wie diese Anmeldeinformationen verwendet werden, wenn Client-Apps über FCM mit App-Servern kommunizieren.

Registrierung bei FCM

Eine Client-App muss sich zuerst bei FCM registrieren, bevor das Messaging erfolgen kann. Die Client-App muss die im folgenden Diagramm gezeigten Registrierungsschritte ausführen:

Diagramm der App-Registrierungsschritte

  1. Die Client-App kontaktiert FCM, um ein Registrierungstoken zu erhalten, und übergibt die Absender-ID, den API-Schlüssel und die App-ID an FCM.

  2. FCM gibt ein Registrierungstoken an die Client-App zurück.

  3. Die Client-App leitet das Registrierungstoken (optional) an den App-Server weiter.

Der App-Server speichert das Registrierungstoken für die nachfolgende Kommunikation mit der Client-App zwischen. Der App-Server kann eine Bestätigung zurück an die Client-App senden, um anzugeben, dass das Registrierungstoken empfangen wurde. Nachdem dieser Handshake erfolgt ist, kann die Client-App Nachrichten vom App-Server empfangen (oder an diesen senden). Die Client-App erhält möglicherweise ein neues Registrierungstoken, wenn das alte Token kompromittiert ist (ein Beispiel dafür, wie eine App Registrierungstokenupdates empfängt, finden Sie unter Remotebenachrichtigungen mit FCM ).

Wenn die Client-App keine Nachrichten mehr vom App-Server empfangen möchte, kann sie eine Anforderung an den App-Server senden, um das Registrierungstoken zu löschen. Wenn die Client-App von einem Gerät deinstalliert wird, erkennt FCM dies und benachrichtigt den App-Server automatisch, das Registrierungstoken zu löschen.

Downstreammessaging

Das folgende Diagramm veranschaulicht, wie Firebase Cloud Messaging downstream-Nachrichten speichert und weiterleitet:

FCM verwendet

Wenn der App-Server eine Downstreamnachricht an die Client-App sendet, werden die folgenden Schritte ausgeführt, wie im obigen Diagramm aufgeführt:

  1. Der App-Server sendet die Nachricht an FCM.

  2. Wenn das Clientgerät nicht verfügbar ist, speichert der FCM-Server die Nachricht zur späteren Übertragung in einer Warteschlange. Nachrichten werden maximal 4 Wochen lang im FCM-Speicher aufbewahrt (weitere Informationen finden Sie unter Festlegen der Lebensdauer einer Nachricht).

  3. Wenn das Clientgerät verfügbar ist, leitet FCM die Nachricht an die Client-App auf diesem Gerät weiter.

  4. Die Client-App empfängt die Nachricht von FCM, verarbeitet sie und zeigt sie dem Benutzer an. Wenn es sich bei der Nachricht beispielsweise um eine Remotebenachrichtigung handelt, wird sie dem Benutzer im Infobereich angezeigt.

In diesem Messagingszenario (in dem der App-Server eine Nachricht an eine einzelne Client-App sendet) können Nachrichten bis zu 4kB lang sein.

Ausführliche Informationen zum Empfangen von nachgeschalteten FCM-Nachrichten unter Android finden Sie unter Remotebenachrichtigungen mit FCM.

Themennachrichten

Themenmessaging ermöglicht es einem App-Server, eine Nachricht an mehrere Geräte zu senden, die sich für ein bestimmtes Thema entschieden haben. Sie können auch Themennachrichten über die Benutzeroberfläche der Firebase-Konsolenbenachrichtigungen verfassen und senden. FCM übernimmt das Routing und die Übermittlung von Themennachrichten an abonnierte Clients. Dieses Feature kann für Nachrichten wie Wetterwarnungen, Aktienkurse und Schlagzeilen verwendet werden.

Diagramm zum Thema Messaging

Die folgenden Schritte werden beim Thema messaging verwendet (nachdem die Client-App wie zuvor erläutert ein Registrierungstoken abgerufen hat):

  1. Die Client-App abonniert ein Thema, indem eine Abonnementnachricht an FCM gesendet wird.

  2. Der App-Server sendet Themennachrichten zur Verteilung an FCM.

  3. FCM leitet Themennachrichten an Clients weiter, die dieses Thema abonniert haben.

Weitere Informationen zum Messaging von Firebase-Themen finden Sie unter Themennachrichten von Google unter Android.

Einrichten von Firebase Cloud Messaging

Bevor Sie FCM-Dienste in Ihrer App verwenden können, müssen Sie über die Firebase-Konsole ein neues Projekt erstellen (oder ein vorhandenes Projekt importieren). Führen Sie die folgenden Schritte aus, um ein Firebase Cloud Messaging-Projekt für Ihre App zu erstellen:

  1. Melden Sie sich mit Ihrem Google-Konto (d. h. Ihrer Gmail-Adresse) bei der Firebase-Konsole an, und klicken Sie auf NEUES PROJEKT ERSTELLEN:

    Schaltfläche

    Wenn Sie über ein vorhandenes Projekt verfügen, klicken Sie auf Google-Projekt importieren.

  2. Geben Sie im Dialogfeld Projekt erstellen den Namen Ihres Projekts ein, und klicken Sie auf PROJEKT ERSTELLEN. Im folgenden Beispiel wird ein neues Projekt mit dem Namen XamarinFCM erstellt:

    Dialogfeld

  3. Klicken Sie in der Übersicht über die Firebase-Konsole auf Firebase zu Ihrer Android-App hinzufügen:

    Hinzufügen von Firebase zu Ihrer Android-App

  4. Geben Sie auf dem nächsten Bildschirm den Paketnamen Ihrer App ein. In diesem Beispiel lautet der Paketname com.xamarin.fcmexample. Dieser Wert muss mit dem Paketnamen Ihrer Android-App übereinstimmen. Ein App-Spitzname kann auch im Feld App-Spitzname eingegeben werden:

    Eingeben des FCM-Beispiels als App-Spitzname

  5. Wenn Ihre App dynamische Links, Einladungen oder Google-Authentifizierung verwendet, müssen Sie auch Ihr Debugsignaturzertifikat eingeben. Weitere Informationen zum Auffinden Ihres Signaturzertifikats finden Sie unter Suchen der MD5- oder SHA1-Signatur Ihres Keystores. In diesem Beispiel bleibt das Signaturzertifikat leer.

  6. Klicken Sie auf APP HINZUFÜGEN:

    Klicken auf die Schaltfläche

    Ein Server-API-Schlüssel und eine Client-ID werden automatisch für die App generiert. Diese Informationen sind in einer Google-services.json-Datei verpackt, die automatisch heruntergeladen wird, wenn Sie auf APP hinzufügen klicken. Achten Sie darauf, diese Datei an einem sicheren Ort zu speichern.

Ein ausführliches Beispiel zum Hinzufügen von google-services.json zu einem App-Projekt zum Empfangen von FCM-Pushbenachrichtigungen unter Android finden Sie unter Remotebenachrichtigungen mit FCM.

Weitere nützliche Informationen

  • Firebase Cloud Messaging von Google bietet eine Übersicht über die wichtigsten Funktionen von Firebase Cloud Messaging, eine Erläuterung der Funktionsweise und Einrichtungsanweisungen.

  • In der Build App Server Send Requests von Google wird erläutert, wie Nachrichten mit Ihrem App-Server gesendet werden.

  • RFC 6120 und RFC 6121 erläutern und definieren das Extensible Messaging and Presence Protocol (XMPP).

  • Informationen zu FCM-Nachrichten beschreibt die verschiedenen Arten von Nachrichten, die mit Firebase Cloud Messaging gesendet werden können.

Zusammenfassung

Dieser Artikel bietet eine Übersicht über Firebase Cloud Messaging (FCM). Es wurden die verschiedenen Anmeldeinformationen erläutert, die zum Identifizieren und Autorisieren von Messaging zwischen App-Servern und Client-Apps verwendet werden. Es veranschaulichte die Registrierungs- und Downstreammessagingszenarien sowie die Schritte zum Registrieren Ihrer App bei FCM für die Verwendung von FCM-Diensten.