Ihre erste Multicast-Push-Nachricht mit FCM-Themen

1. Einleitung

Ziele

In diesem Codelab erfahren Sie, wie Sie Ihre plattformübergreifende App so instrumentieren, dass Sie mithilfe von FCM-Themen Push-Nachrichten per Multicast an verschiedene Untergruppen Ihrer App-Instanzen senden können.

Sobald Sie fertig sind, können Sie die FCM-Infrastruktur nutzen, um diese Untergruppen sowie Multicast-Push-Nachrichten über die Untergruppen zu verwalten.

Themenübersicht

Themen sind eine von der FCM-Infrastruktur unterstützte Möglichkeit, Untergruppen Ihrer App-Instanzen mit Nachrichten zu erreichen.

FCM stellt die APIs zum Senden von Nachrichten sowie zum Verwalten von Abonnements für diese Themen bereit. Der Vorgang des Zuordnens und Aufhebens einer App-Instanz zu einem Thema wird als „Abonnieren“ bzw. „Abbestellen“ bezeichnet

Themen sollten für öffentlich zugängliche Inhalte verwendet werden. Zum Beispiel Nachrichten über Wetteraktualisierungen. Wenn Sie benutzersensible Nachrichten senden möchten, verwenden Sie das Firebase Admin SDK für das Multicasting von Nachrichten über mehrere Geräte .

Themenbasiertes Multicasting ist für den Durchsatz optimiert.

Was Sie lernen werden

  • So abonnieren (und abbestellen) Benutzer Themen aus einer mobilen App.
  • So senden Sie Multicast-Push-Nachrichten mithilfe von Themen.
  • So senden Sie mithilfe von Themenbedingungen Nachrichten an eine Kombination von Themen.
  • So verwalten Sie Themenabonnements serverseitig und führen Massenabonnements und -abmeldungen durch.

Was Sie bauen werden

  • Eine Android-App, die Themen abonniert/abbestellt und Nachrichten empfängt, wenn sie an die Themen gesendet werden.
  • Eine serverseitige Integration mit dem Firebase Admin SDK, die zum Senden von Themennachrichten über FCM-APIs verwendet wird.

Was du brauchen wirst

  • Ein Browser Ihrer Wahl, z. B. Chrome.
  • IntelliJ IDEA IDE für die Entwicklung von Java-Anwendungen.
    • Stellen Sie sicher, dass Sie bei der Installation die Unterstützung für Gradle aktivieren.
  • Android Studio IDE zum Entwickeln von Android-Anwendungen.
  • Ein Gerät zum Ausführen der Android-Anwendung. Einer von:
    • Der Android-Emulator. (Erfordert Einrichtung in Android Studio ).
    • Ein physisches Android-Gerät, das mit Ihrem Computer verbunden und auf den Entwicklermodus eingestellt ist.
  • Ein Google-Konto zum Erstellen und Verwalten Ihres Firebase-Projekts.

2. Erste Schritte

Holen Sie sich den Code

Klonen Sie das GitHub-Repository über die Befehlszeile:

git clone https://github.com/firebase/quickstart-android.git fcm-codelab

Der Beispielcode wird in das fcm-codelab Verzeichnis geklont.

cd fcm-codelab

Die Starter-App für dieses Codelab befindet sich im messaging Verzeichnis des Zweigs fcm-topics-codelab . Führen Sie die folgenden Schritte aus, um zum Startercode zu gelangen. Es enthält zwei Verzeichnisse StockNewsApp und StockNewsServer . Ersteres enthält die Starter-Android-App und Letzteres den serverseitigen Starter-Code.

git checkout fcm-topics-codelab
cd messaging/fcm-topics-codelab/starter

Die fertige Version dieses Codelabs wird im Verzeichnis messaging/fcm-topics-codelab/completed abgelegt.

Erstellen Sie ein Firebase-Projekt

  1. Klicken Sie in der Firebase-Konsole auf Projekt hinzufügen , nennen Sie das Firebase-Projekt StockNews und klicken Sie auf Weiter. Hinweis: Merken Sie sich die Projekt-ID für Ihr Firebase-Projekt (oder klicken Sie auf das Symbol „Bearbeiten“ , um Ihre bevorzugte Projekt-ID festzulegen).

fc08f9a7808e4553.png

  1. Sie können die Aktivierung von Google Analytics überspringen. Für die Zwecke dieses Codelabs benötigen Sie es nicht. Klicken Sie auf Weiter.
  2. Klicken Sie auf Projekt erstellen .

Glückwunsch! Sie haben gerade Ihr Firebase-Projekt erstellt. Jetzt können Sie auf den Projektnamen klicken, um die Konsole aufzurufen.

3. Plattformspezifische Firebase-App-Konfiguration

Die meisten Codeänderungen, die zum Aktivieren der Firebase-Unterstützung erforderlich sind, sind bereits in das Projekt eingecheckt, an dem Sie arbeiten. Um jedoch Unterstützung für mobile Plattformen hinzuzufügen, müssen Sie:

  • Registrieren Sie die gewünschte Plattform im Firebase-Projekt
  • Laden Sie die plattformspezifische Konfigurationsdatei herunter und fügen Sie sie dem Code hinzu.

Für die Zwecke dieses Codelabs werden wir eine Android Firebase-App hinzufügen.

84e0b3199bef6d8a.png Konfigurieren Sie Android

  1. Wählen Sie in der Firebase-Konsole oben in der linken Navigationsleiste im Zahnrad „Einstellungen“ die Option „Projekteinstellungen“ aus und klicken Sie auf der Seite „ Allgemein“ unter „Ihre Apps“ auf das Android- Symbol.

Sie sollten den folgenden Dialog sehen: 8254fc299e82f528.png

  1. Der wichtige Wert, der angegeben werden muss, ist der Name des Android-Pakets . Stellen Sie es auf com.ticker.stocknews ein.
    1. Der hier angegebene Paketname muss mit dem in der AndroidManifest.xml Ihres StockNewsApp -Startcodes angegebenen Namen übereinstimmen. Wenn Sie es suchen oder ändern möchten, gehen Sie folgendermaßen vor:
      1. Öffnen Sie im StockNewsApp- Verzeichnis die Datei app/src/main/AndroidManifest.xml .
      2. Suchen Sie im manifest nach dem Zeichenfolgenwert des package . Dieser Wert ist der Android-Paketname.
  1. Fügen Sie im Firebase-Dialogfeld den kopierten Paketnamen in das Feld „Android-Paketname“ ein.
  2. Sie benötigen für dieses Codelab kein Debug-Signaturzertifikat SHA-1 , da diese App nicht veröffentlicht wird. Lassen Sie dieses Feld leer.
  3. Klicken Sie auf App registrieren .
  4. Folgen Sie in der Firebase-Konsole den Anweisungen zum Herunterladen der Konfigurationsdatei google-services.json .
  5. Sie können die restlichen Einrichtungsschritte überspringen, da alles andere bereits im Starter-App-Code konfiguriert ist. Sie finden Ihre App auf der Hauptseite der Firebase Console aufgeführt.
  6. Kopieren Sie die Datei google-services.json (die Sie gerade heruntergeladen haben) in das Verzeichnis messaging/fcm-topics-codelab/starter/StockNewsApp/app .

4. Erstellen Sie Ihre App und führen Sie sie aus

Sie können nun mit der Arbeit an Ihrer App beginnen! Erstellen Sie zunächst die App und führen Sie sie aus.

Importieren Sie die Starter-App

Starten Sie Android Studio und importieren Sie die messaging/fcm-topics-codelab/starter/StockNewsApp aus dem Startercode-Verzeichnis.

Nachdem das Projekt geladen wurde, wird möglicherweise auch eine Warnung angezeigt, dass Git nicht alle Ihre lokalen Änderungen verfolgt. Sie können auf „ Ignorieren “ oder das „ X “ oben rechts klicken. (Sie werden keine Änderungen zurück an das Git-Repository übertragen.)

In der oberen linken Ecke des Projektfensters sollten Sie in der Android- Ansicht etwas wie das Bild unten sehen. (Wenn Sie sich in der Projektansicht befinden, müssen Sie das Projekt erweitern, um dasselbe zu sehen.)

b574ea0089ee87c6.png

Bitte beachten Sie, dass es bei Android Studio einige Sekunden dauern kann, bis das Projekt im Hintergrund zum ersten Mal kompiliert ist. Während dieser Zeit sehen Sie in der Statusleiste unten in Android Studio einen Spinner:

4bc64eb3b99eb0ae.png

Wir empfehlen, dass Sie warten, bis dieser Vorgang abgeschlossen ist, bevor Sie Codeänderungen vornehmen. Dadurch kann Android Studio alle erforderlichen Komponenten integrieren.

Wenn Sie außerdem die Meldung „Neu laden, damit die Sprachänderungen wirksam werden?“ erhalten? oder etwas Ähnliches, wählen Sie „Ja“.

Emulator-Setup

Wenn Sie Hilfe beim Einrichten eines Android-Emulators benötigen, lesen Sie den Artikel „App ausführen“ .

Verstehen Sie den Startcode der Android-App

  • Der Startercode ist eine leichte Android-App mit minimaler Funktionalität und Benutzeroberfläche.
  • Der Datei app/build.gradle ist bereits eine Abhängigkeit zum Firebase-Messaging SDK hinzugefügt.

f04ff8f48d186dff.png

  • In AndroidManifest.xml ist bereits ein MESSAGING_EVENT Rückrufhandler hinzugefügt.
    • Dieser Handler, StockNewsMessagingService.java erweitert die FirebaseMessagingService Klasse, die verschiedene Firebase Cloud Messaging-bezogene Funktionen bereitstellt. Weitere Informationen finden Sie in der FirebaseMessagingService-Dokumentation . b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • Die Funktion onNewToken wird aufgerufen, wenn das FCM-Registrierungstoken erstellt oder aktualisiert wird. Weitere Informationen finden Sie unter Überwachen der Token-Generierung .
    • Die Funktion onMessageReceived wird aufgerufen, wenn eine Nachricht empfangen wird und die App im Vordergrund ist. Derzeit wird lediglich die empfangene Nachricht protokolliert.
  • Außerdem wird in AndroidManifest.xml eine Android- Application mit dem Namen StockNewsApplication bereitgestellt. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Diese Klasse ist die erste, die beim Start der App instanziiert wird.
    • In der onCreate Funktion der StockNewsApplication Klasse wird ein Aufruf zur Erstellung eines FCM-Registrierungstokens hinzugefügt. Es wird ein gültiges FCM-Registrierungstoken generiert und protokolliert.
  • MainActivity.java fügt die RecyclerView hinzu, die die Auswahlmöglichkeiten für die Bestandskategorie anzeigt.
  • SubscriptionAdapter.java implementiert RecyclerView.Adapter , der den Auswahlbildschirm für die Aktienkategorie zeichnet.
    • Jede Aktienkategorie hat einen Namen und einen Abonnement-Schalter daneben.
    • Wenn Sie den Schalter ändern, sollte ein Anruf zum An-/Abmelden des FCM-Themas erfolgen.
    • Sie werden diese Aufrufe in den kommenden Abschnitten umsetzen.
  • Die Klasse model/StockCategories.java enthält eine Liste aller Stockkategorien und der zugehörigen Themennamen.

b32663ec4e865a18.png

Führen Sie die Starter-App aus

  1. Verbinden Sie Ihr Android-Gerät mit Ihrem Computer oder starten Sie einen Emulator.
  2. Wählen Sie in der oberen Symbolleiste Ihr Android-Zielgerät oder Ihren Emulator aus und klicken Sie auf die Schaltfläche „Ausführen“.

5b27fc5b237e06b9.png

  1. Die App-Benutzeroberfläche sieht wie folgt aus:

ff5b1a1c53231c54.png

  1. Die App erstellt ein FCM-Registrierungstoken und protokolliert es. An der App-Benutzeroberfläche wird sich jedoch nichts ändern.
    1. Kopieren und speichern Sie das FCM-Registrierungstoken, da es in den nächsten Schritten verwendet wird.

927eb66bc909f36b.png

5. Senden Sie eine Testnachricht

Jetzt können Sie eine Testnachricht an die App-Instanz senden, die Sie im letzten Schritt eingerichtet haben.

Importieren Sie den Starter-Servercode

Starten Sie IntelliJ IDEA und öffnen Sie das Projekt messaging/fcm-topics-codelab/starter/StockNewsServer .

Die Projektansicht in Ihrer linken Navigationsleiste sollte etwa so aussehen:

da20711f6527dff6.png

Beachten Sie, dass es einige Minuten dauern kann, bis IntellIj IDEA Ihr Projekt erstellt hat, einschließlich des Abrufens der erforderlichen Abhängigkeiten.

Verstehen Sie den Server-Startcode

  • Der Server-Startercode ist ein Gradle-basiertes Java-Projekt.
  • Der Datei build.gradle ist bereits die Abhängigkeit vom Firebase-Admin-SDK hinzugefügt. Dieses SDK bietet Zugriff auf verschiedene FCM-Nachrichtenversandfunktionen.

650fc733298588f8.png

  • Schließlich gibt es zwei Klassen, nämlich:
    • FcmSender.java : Diese Klasse enthält die folgenden bemerkenswerten Methoden:
      • initFirebaseSDK : Initialisiert das Firebase-Admin-SDK.
      • sendMessageToFcmRegistrationToken : Senden Sie eine Nachricht an ein FCM-Registrierungstoken.
      • sendMessageToFcmTopic : Senden Sie eine Nachricht an ein FCM-Thema.
      • sendMessageToFcmTopicCondition : Senden Sie eine Nachricht an eine FCM-Themenbedingung.
    • FcmSubscriptionManager.java : Diese Klasse enthält Methoden, die die serverseitige Verwaltung von Themenabonnements ermöglichen.
      • initFirebaseSDK : Initialisiert das Firebase-Admin-SDK.
      • subscribeFcmRegistrationTokensToTopic : FCM-Registrierungstoken für ein FCM-Thema abonnieren.
      • unsubscribeFcmRegistrationTokensFromTopic : FCM-Registrierungstoken von einem FCM-Thema abbestellen.

Einrichten des Servercodes

  1. Zuerst müssen wir ein Firebase-Dienstkonto einrichten, das es dem Firebase-Admin-SDK ermöglicht, Aufrufe an FCM-APIs zu autorisieren.
    1. Gehen Sie zur Firebase-Konsole, klicken Sie in der linken Navigationsleiste auf das Zahnradsymbol neben „Projektübersicht“ und wählen Sie „Projekteinstellungen“ aus. 8c2108d4d7c915e9.png
    2. Wählen Sie auf der Einstellungsseite Dienstkonten aus und klicken Sie auf Dienstkonto erstellen . 84b128cc5dac0a85.png
    3. Klicken Sie nun auf die Schaltfläche „Neuen privaten Schlüssel generieren“ und ein automatischer Download Ihrer Schlüsseldatei beginnt.
    4. Benennen Sie die Schlüsseldatei in service-account.json um und kopieren Sie sie in den Ordner messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources .
    5. Sowohl FcmSender.java als auch FcmSubscriptionManager.java laden die Datei service-account.json aus dem Klassenpfad mit dem folgenden Code. 8dffbee658e0bdd.png
  2. Zu diesem Zeitpunkt ist der Servercode fertig. Führen Sie Build -> Build Project aus der oberen Menüleiste aus.

Senden einer Testnachricht

  1. Suchen Sie in FcmSender.java die Funktion sendMessageToFcmRegistrationToken und fügen Sie das FCM-Registrierungstoken, das Sie aus dem Abschnitt „Starter-App ausführen“ kopiert haben, in das Feld registrationToken ein.
  2. Kommentieren Sie in der main nur die Funktion sendMessageToFcmRegistrationToken aus und klicken Sie auf „Ausführen“, um den Code auszuführen.
    1. Beobachten Sie, wie das FCM-Registrierungstoken im Feld Token des message festgelegt wird.
    2. Beachten Sie außerdem, wie wir die send API der FirebaseMessaging Schnittstelle verwendet haben.

52e4a3ec3f816473.png

  1. Dadurch sollte eine Nachricht an die App-Instanz gesendet werden, die Sie im vorherigen Schritt eingerichtet haben.
  2. Wenn sich die App-Instanz im Vordergrund befindet, sollte der protokollierte Nachrichteninhalt angezeigt werden.

d3540ec1089f97dd.png

  1. Wenn sich die App-Instanz im Hintergrund befindet, wird die Meldung in der Benachrichtigungsleiste angezeigt.

31203deca59c03fe.png

Großartig, Sie haben das Firebase Admin SDK verwendet, um Nachrichten an eine App-Instanz zu senden. Erfahren Sie mehr über die Verwendung des Firebase Admin SDK auf Ihrem Server .

6. Implementieren Sie das Abonnieren/Abmelden des Themas

In diesem Schritt implementieren Sie Aktionen zum An- und Abmelden von Themen im Bereich „Aktienkategorie“ der Android-App.

Wenn ein App-Benutzer den Schalter für eine bestimmte Aktienkategorie umschaltet, wird ein Anruf zum Thema Abonnement oder Abmeldung getätigt.

Überprüfen Sie den Code

  • Navigieren Sie im Android-App-Code zur Klasse SubscriptionAdapter.java “ und suchen Sie die Klasse RecyclerViewViewHolder .

6c0614199e684f6.png

  • Der Klassenkonstruktor richtet mithilfe von setOnCheckedChangeListener einen Listener für die Abonnementumschaltung ein.
  • Abhängig von der Schalterumschaltung werden Abonnement- und Abmeldeaktionen durch den Aufruf der Methoden subscribeToStockCategory bzw. unsubscribeFromStockCategory ausgeführt.
  • Die setData Methode wird vom onBindViewHolder des RecyclerView-Adapters aufgerufen, um den ViewHolder mit der entsprechenden Stock-Kategorie zu binden.

Themenabonnement implementieren

  1. In der subscribeToStockCategory Methode implementieren Sie den Aufruf der subscribeToTopic API des FirebaseMessaging Objekts. Der Code könnte etwa so aussehen:
   void subscribeToStockCategory() {
      // Making call to FCM for subscribing to the topic for stockCategory
     FirebaseMessaging.getInstance().subscribeToTopic(stockCategory.getTopicName()).addOnSuccessListener(
          unused -> {
            // Subscribing action successful
            Log.i(TAG, "Subscribed to topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Subscribed to " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Themenabmeldung implementieren

  1. In ähnlicher Weise implementieren Sie in der else-Bedingung den Aufruf der unsubscribeFromTopic API. Es folgt etwas in der Art:
void unsubscribeFromStockCategory() {
      // Making call to FCM for unsubscribing from the topic for stockCategory
      FirebaseMessaging.getInstance().unsubscribeFromTopic(stockCategory.getTopicName())
          .addOnSuccessListener(unused -> {
            // Unsubscribing action successful
            Log.i(TAG, "Unsubscribed from topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Unsubscribed from " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Probieren wir es aus

  1. Führen Sie die App aus und schalten Sie die Aktienkategorieoptionen um, um Abonnieren- und Abmelden-Aktionen auszuführen. Es würde ungefähr so ​​aussehen:

Abonnieren

Abbestellen

7. Senden Sie Ihre erste Themennachricht

In diesem Schritt implementieren Sie serverseitigen Code zum Senden einer FCM-Themennachricht.

Implementieren Sie eine serverseitige Integration zum Senden von Themennachrichten

  1. Springen Sie im Servercode zu FcmSender.java und suchen Sie die Methode mit dem Namen sendMessageToFcmTopic .

56381dd1b40cde9c.png

  1. Geben Sie in der ersten Zeile das FCM-Thema an, an das Sie die Nachricht senden möchten.
    • Es handelt sich um eine Zeichenfolge der Form: /topics/<Topic Name> . Zum Beispiel /topics/Technology .
  2. Erstellen Sie in den nächsten Zeilen ein neues message (ähnlich dem in der Funktion sendMessageToFcmRegistrationToken definierten).
    • Der Unterschied besteht darin, dass Sie statt des Felds Token des message das Feld Topic festlegen.
Message message = Message.builder()
        .putData("FOOTECH", "$1000")
        .setNotification(
            Notification.builder()
                .setTitle("Investor confidence in Tech Stocks growing")
                .setBody("Foo Tech leading the way in stock growth for Tech sector.")
                .build())
        .setTopic(topicName)
        .build();
  1. Fügen Sie nun den Aufruf zur FirebaseMessaging Instanz hinzu, um die Nachricht zu senden (identisch mit dem Sendeaufruf in der Funktion sendMessageToFcmRegistrationToken ).
FirebaseMessaging.getInstance().send(message);
  1. Aktualisieren Sie abschließend die main und aktivieren Sie den Aufruf nur für sendMessageToFcmTopic Funktion.

9a6aa08dd7c28898.png

Nachricht senden und Empfang bestätigen

  1. Stellen Sie vor dem Senden der Themennachricht zunächst sicher, dass Ihre App-Instanz das Thema abonniert hat, an das Sie senden möchten.
    1. Dies kann durch Umlegen des entsprechenden Schalters erfolgen. Zum Beispiel:
    4668247408377712.png
  2. Sie können jetzt Ihre Themennachricht senden, indem Sie die main von FcmSender.java ausführen.
  3. Wie zuvor sollten Sie den Nachrichtenempfang auf der App-Instanz beobachten können.
    1. App-Instanz im Vordergrund
    c144721399f610fe.png
    1. App-Instanz im Hintergrund
    44efc7dfd57e8e9a.png
  4. Bonus: Versuchen Sie, das Thema, an das Sie gesendet haben, abzubestellen, und senden Sie die Nachricht erneut. Sie würden feststellen, dass die Nachricht nicht an die App-Instanz übermittelt wird.

8. Senden Sie Ihre erste Themenzustandsnachricht

Mit der Funktion „Themenbedingung“ können Sie Nachrichten an eine Kombination von Themen senden und so eine aussagekräftigere Zielgruppendefinition bereitstellen.

Erwägen Sie beispielsweise in unserer StockNews-App die Möglichkeit, Nachrichten an eine Gruppe von App-Instanzen zu senden, die entweder Technologie- oder Automobilthemen abonniert haben. Ein solcher Fall kann beispielsweise eintreten, wenn es zu einem nennenswerten Ereignis im Zusammenhang mit Waymo kommt.

Mit Topics können Sie Ihre Kombination in Form eines booleschen Ausdrucks mithilfe der folgenden Operatoren ausdrücken

  • && : Logisches UND. Beispiel: 'Technology' in topics && 'Automotive' in topics – Zielt nur auf die App-Instanzen ab, die sowohl Technologie- als auch Automotive-Themen abonniert haben.
  • || : Logisches ODER. Beispiel: 'Technology' in topics || 'Automotive' in topics – Zielt auf App-Instanzen ab, die entweder Technologie- oder Automotive-Themen abonniert haben.
  • () : Klammern für die Gruppierung. Beispiel: 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) – Zielt nur auf App-Instanzen ab, die Technologie- und entweder Automobil- oder Energiethemen abonniert haben.

Erfahren Sie mehr darüber, wie Sie Sendeanfragen für die Nutzung dieser Funktionalität erstellen .

Implementieren Sie eine serverseitige Integration zum Senden von Themenbedingungsnachrichten

  1. Zurück im Servercode springen Sie zu FcmSender.java und suchen Sie die Methode mit dem Namen sendMessageToFcmTopicCondition .

3719a86c274522cf.png

  1. Geben Sie in der ersten Zeile für die Variable topicCondition die Themenbedingung an, an die Sie die Nachricht senden möchten. Sie können Folgendes festlegen: 'Technology' in topics && 'Automotive' in topics .
  2. Erstellen Sie in den nächsten Zeilen ein neues message (ähnlich dem in der Funktion sendMessageToFcmTopic definierten).
    1. Der Unterschied besteht darin, dass Sie nicht das Feld Topic des Objekts, sondern das Feld „ Condition festlegen.
    Message message = Message.builder()
        .putData("FOOCAR", "$500")
        .setNotification(
            Notification.builder()
                .setTitle("Foo Car shows strong Q2 results")
                .setBody("Foo Car crosses 1B miles. Stocks rally.")
                .build())
        .setCondition(topicCondition)
        .build();
  1. Fügen Sie nun den Aufruf zur FirebaseMessaging Instanz hinzu, um die Nachricht zu senden (identisch mit dem Sendeaufruf in der Funktion sendMessageToFcmTopic ).
FirebaseMessaging.getInstance().send(message);
  1. Aktualisieren Sie abschließend die main und aktivieren Sie den Aufruf nur für die Funktion sendMessageToFcmTopicCondition .

db9588d40d2a0da6.png

Senden Sie die Nachricht und bestätigen Sie den Empfang

  1. Bevor Sie die Themennachricht senden, stellen Sie zunächst sicher, dass Ihre App-Instanz die angegebene Themenbedingung erfüllt, indem Sie die App-Instanz sowohl für Technologie- als auch für Automobilthemen abonnieren.
  2. Sie können jetzt Ihre Themennachricht senden, indem Sie die main von FcmSender.java ausführen.
  3. Wie zuvor sollten Sie den Nachrichtenempfang auf der App-Instanz beobachten können.
    1. App-Instanz im Vordergrund
    6f612ace15aa6515.png
    1. App-Instanz im Hintergrund
    78044a56ac2359cb.png
  4. Bonus: Sie können sich jetzt vom Thema „Technologie“ abmelden und die Nachricht zur Themenbedingung erneut senden. Beachten Sie, dass die Nachricht nicht von der App-Instanz empfangen wird.

9. Zusammenfassung

Lassen Sie uns kurz zusammenfassen, was Sie bisher gelernt haben.

  • So initiieren Sie ein Themenabonnement/Abmeldung von einer App-Instanz.
  • Senden einer Nachricht an das Thema und Überprüfen des Empfangs bei abonnierten App-Instanzen.
  • Senden einer Nachricht an eine Themenbedingung und Überprüfen des Empfangs auf einer App-Instanz, die die Bedingung erfüllt.

Im nächsten Abschnitt erfahren Sie, wie Sie App-Instanzen für Themen abonnieren bzw. abbestellen können, ohne Aufrufe von der Clientseite instanziieren zu müssen.

c0dc20655d392690.gif

10. Themenabonnements serverseitig verwalten

Bisher werden in diesem Codelab alle Aufrufe zum An- und Abmelden von Themen von einer App-Instanz aus initiiert.

In einigen Anwendungsfällen möchten Sie jedoch möglicherweise die Themenabonnements serverseitig verwalten. Beispielsweise möchten Sie möglicherweise eine Untergruppe Ihrer bestehenden Benutzerbasis für ein neues Thema abonnieren, ohne auf die Einführung einer App warten zu müssen.

In diesem Abschnitt erfahren Sie, wie Sie mit dem Firebase Admin SDK einen Stapel von FCM-Registrierungstokens für ein Thema abonnieren und abbestellen, indem Sie Aufrufe von der Serverseite aus durchführen.

Implementieren Sie ein serverseitiges Abonnement von FCM-Registrierungstokens für das FCM-Thema

  1. Springen Sie im Servercode in die Klasse FcmSubscriptionManager.java . Suchen Sie die Methode subscribeFcmRegistrationTokensToTopic . Hier implementieren Sie den Aufruf der subscribeToTopic API.

5d5709e7b3cbcb04.png

  1. Abonnieren wir die App-Instanz für das Thema „Energie“. Geben Sie dazu zunächst Daten für die folgenden beiden Felder an:
    1. registrationTokens : eine durch Kommas getrennte Liste von Zeichenfolgen, die die FCM-Registrierungstokens darstellen, für die Sie Themenabonnements erstellen möchten.
    2. topicName : der Themenname für das Energiethema, z. B. /topics/Energy .
  2. Implementieren Sie in den nächsten Zeilen den Aufruf wie folgt:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Sie können TopicManagementResponse auf einige allgemeine Ergebnisstatistiken untersuchen. Zum Beispiel das Drucken der Anzahl erfolgreich erstellter Themenabonnements mit getSuccessCount .
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Schließlich aktivieren Sie in der main nur Aufrufe der Funktion subscribeFcmRegistrationTokensToTopic .

Abonnement erstellen und Themennachricht senden

  1. An diesem Punkt können Sie das Themenabonnement erstellen und ihm eine Nachricht senden.
  2. Führen Sie die main der Klasse FcmSubscriptionManager.java aus. Dadurch wird ein Themenabonnement erstellt.
  3. Richten Sie nun den Code zum Senden der Nachricht ein. Ähnlich wie vorher,
    1. Suchen Sie in FcmSender.java nach der Funktion sendMessageToFcmTopic .
    2. Legen Sie den topicName auf das Energiethema fest, z. B. /topics/Energy .
    3. Erstellen Sie ein Message Objekt und richten Sie es mithilfe von setTopic auf das Thema aus.
    4. Aktualisieren Sie abschließend die main , um nur die Funktion sendMessageToFcmTopic zu aktivieren.
  4. Führen Sie die main von FcmSender.java aus. Dadurch wird die Nachricht an Ihre App-Instanz gesendet und Sie können sie wie folgt in Ihrer App beobachten.
    1. App-Instanz im Vordergrund
    40ab6cf71e0e4116.png
    1. App-Instanz im Hintergrund
    8fba81037198209e.png

Implementieren Sie die serverseitige Abmeldung von FCM-Registrierungstokens für das FCM-Thema

  1. Für serverseitige Themenabmeldungen verwenden Sie diese unsubscribeFromTopic API. Sie fügen den relevanten Code zur Funktion unsubscribeFcmRegistrationTokensFromTopic “ der Klasse FcmSubscriptionManager.java hinzu.

8d9e8ea9d34016bd.png

  1. Die Implementierung des serverseitigen Abmeldecodes und die Validierung seiner Wirkung durch Senden einer Themennachricht bleibt Ihnen als Übung überlassen.

11. Herzlichen Glückwunsch

Herzlichen Glückwunsch, Sie haben FCM-Themen erfolgreich verwendet, um Multicast-Nachrichten an Untergruppen Ihrer App-Instanzen zu senden. Dadurch wird es Ihnen leichter fallen, Ihre Benutzer rechtzeitig mit relevanten Inhalten zu erreichen.

947def3eb33b1e4a.gif

Was kommt als nächstes?

Nachdem Sie nun Ihr Codelab fertiggestellt haben, können Sie anhand der folgenden Leitfäden Themen für andere Plattformen ausprobieren:

Referenzdokumente