Firebase Cloud Messaging

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

Herobild 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, Weiterleiten und Warteschlangen von Nachrichten zwischen Serveranwendungen und mobilen Client-Apps verarbeitet. 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 (von Ihnen oder Ihrem Unternehmen bereitgestellte) App-Server ist der FCM-fähige Server, mit dem Ihre Client-App über FCM kommuniziert. Im Gegensatz zu GCM ermöglicht FCM es Ihnen, Nachrichten direkt über die Firebase Console Notifications GUI an Client-Apps zu senden:

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

Mit 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 Downstreamnachrichten von einem App-Server zu abonnieren (z. B. zum Empfangen von Remotebenachrichtigungen). Weitere Informationen zu den verschiedenen Typen 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:

  • Die Absender-ID ist ein eindeutiger numerischer Wert, der beim Erstellen Ihres Firebase-Projekts zugewiesen wird. 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 von der Firebase-Konsole, wenn Sie Ihr Projekt registrieren. Ein Beispiel für eine Absender-ID ist 496915549731 .

  • 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üsselbezeichnet. Ein Beispiel für einen API-Schlüssel ist AJzbSyCTcpfRT1YRqbz-jIwp1h06YdauvewGDzk .

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

  • Das Registrierungstoken (auch als Instanz-IDbezeichnet) 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 Instanz 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 Leitfaden) enthält ausführliche Anweisungen zum Erstellen eines Projekts und zum Generieren dieser Anmeldeinformationen. Wenn Sie ein neues Projekt in der Firebase-Konsoleerstellen, wird eine Anmeldeinformationsdatei namens google-services.json erstellt. Fügen Sie diese Datei Ihrem Xamarin.Android-Projekt hinzu, wie unter Remotebenachrichtigungen mit FCMerlä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 zunächst bei FCM registrieren, bevor Messaging erfolgen kann. Die Client-App muss die im folgenden Diagramm gezeigten Registrierungsschritte ausführen:

Diagramm der Schritte für die App-Registrierung

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

  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 Nachrichten 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 Aktualisierungen des Registrierungstokens 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 zum Löschen des Registrierungstokens an den App-Server senden. 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 Downstreamnachrichten speichert und weiterleitet:

FCM verwendet store and forward für Downstreammessaging.

Wenn der App-Server eine Downstreamnachricht an die Client-App sendet, werden die folgenden Schritte wie im obigen Diagramm aufgeführt ausgefü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 vier 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 eine Länge von bis zu 4 KB haben.

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

Themenmessaging

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 Themennachrichten auch über die Firebase-Konsolenbenachrichtigungs-GUI erstellen und senden. FCM verarbeitet das Routing und die Übermittlung von Themennachrichten an abonnierte Clients. Dieses Feature kann für Nachrichten wie Wetterwarnungen, Kursnotierungen und Titelnachrichten verwendet werden.

Themenmessagingdiagramm

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

  1. Die Client-App abonniert ein Thema, indem sie eine Abonnementnachricht an FCM sendet.

  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 Firebase-Themenmessaging finden Sie unter Themamessagingvon Google unter Android.

Einrichten von Firebase Cloud Messaging

Bevor Sie FCM-Dienste in Ihrer App verwenden können, müssen Sie über die Firebase-Konsoleein neues Projekt erstellen (oder ein vorhandenes Projekt importieren). Verwenden Sie die folgenden Schritte, 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 CREATE NEW PROJECT (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 CREATE PROJECT. Im folgenden Beispiel wird ein neues Projekt namens XamarinFCM erstellt:

    Dialogfeld

  3. Klicken Sie in der Übersicht überdie 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 in das Feld App-Spitzname eingegeben werden:

    Eingeben des FCM-Beispiels als App-Spitzname

  5. Wenn Ihre App dynamische Links, Einladungen oder Google Auth verwendet, müssen Sie auch Ihr Debugsignaturzertifikat eingeben. Weitere Informationen zum Suchen Ihres Signaturzertifikats finden Sie unter Finding your Keystore es MD5 or SHA1 Signature ( Suchen der MD5- oder SHA1-Signatur Ihres Keystores). In diesem Beispiel wird das Signaturzertifikat leer gelassen.

  6. Klicken Sie auf APP HINZUFÜGEN:

    Klicken auf die Schaltfläche App hinzufügen

    Ein Server-API-Schlüssel und eine Client-ID werden automatisch für die App generiert. Diese Informationen werden in eine Google-Services.json-Datei gepackt, die automatisch heruntergeladen wird, wenn Sie auf APP HINZUFÜGENklicken. 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-Pushbenachrichtigungsnachrichten 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 den Sendeanforderungen für Build App Server 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 bot 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. Sie veranschaulichte die Registrierungs- und Downstreammessagingszenarien und erläuterte die Schritte zum Registrieren Ihrer App bei FCM für die Verwendung von FCM-Diensten.