Ihre erste Multicast-Push-Nachricht mit FCM-Themen

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

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 Verknüpfens und Trennens einer App-Instanz mit 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 kündigen) Sie Benutzer für 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.
  • Wie man Themenabonnements auf der Serverseite verwaltet und Massenabonnements und -abmeldungen durchführt.

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, das zum Senden von Themennachrichten über FCM-APIs verwendet wird.

Was du brauchen wirst

  • Ein Browser Ihrer Wahl, z. B. Chrome.
  • IntelliJ IDEA IDE zum Entwickeln von Java-Anwendungen.
    • Stellen Sie sicher, dass Sie während der Installation den Support 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. Einrichten

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 geklont.

cd fcm-codelab

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

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

Die fertige Version dieses Codelabs befindet sich im messaging/fcm-topics-codelab/completed .

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 .

Herzliche Glückwünsche! 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 Folgendes tun:

  • 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 Android konfigurieren

  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 anzugebende Wert ist der Name des Android-Pakets . Setzen Sie es auf com.ticker.stocknews .
    1. Der hier angegebene Paketname muss mit dem in der AndroidManifest.xml Ihres StockNewsApp -Startercodes 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 -Element den Zeichenfolgenwert des package . Dieser Wert ist der Name des Android-Pakets.
  1. Fügen Sie im Firebase-Dialogfeld den kopierten Paketnamen in das Feld für den Android-Paketnamen ein.
  2. Sie benötigen das Debug-Signaturzertifikat SHA-1 für dieses Codelab nicht, 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 verbleibenden Einrichtungsschritte überspringen, da alles andere bereits im Starter-App-Code konfiguriert ist. Sie finden Ihre App auf der Hauptseite der Firebase Console aufgelistet.
  6. Kopieren Sie die Datei „ google-services.json “ (die Sie gerade heruntergeladen haben) in das messaging/fcm-topics-codelab/starter/StockNewsApp/app .

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

Sie sind bereit, mit der Arbeit an Ihrer App zu 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 Startcode-Verzeichnis.

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

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

b574ea0089ee87c6.png

Bitte beachten Sie, dass Android Studio beim ersten Mal einige Sekunden dauern kann, um das Projekt im Hintergrund zu kompilieren. Während dieser Zeit sehen Sie in der Statusleiste unten in Android Studio einen Spinner:

4bc64eb3b99eb0ae.png

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

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 Führen Sie Ihre App aus.

Verstehen Sie den Startcode der Android-App

  • Der Startcode ist eine leichtgewichtige Android-App mit minimaler Funktionalität und UI.
  • Der Datei app/build.gradle wurde bereits eine Abhängigkeit zum Firebase-Messaging-SDK hinzugefügt.

f04ff8f48d186dff.png

  • In AndroidManifest.xml ist bereits ein MESSAGING_EVENT Callback-Handler 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 onNewToken Funktion wird aufgerufen, wenn das FCM-Registrierungstoken erstellt oder aktualisiert wird. Weitere Informationen finden Sie unter Überwachen der Tokengenerierung .
    • Die Funktion onMessageReceived wird aufgerufen, wenn eine Nachricht empfangen wird und sich die App im Vordergrund befindet. Derzeit protokolliert es einfach die empfangene Nachricht.
  • Außerdem wird in AndroidManifest.xml eine Android- Application mit dem Namen StockNewsApplication bereitgestellt. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Diese Klasse wird als erste instanziiert, wenn die App gestartet wird.
    • In der onCreate -Funktion der StockNewsApplication -Klasse wird ein FCM-Registrierungs-Token-Erstellungsaufruf hinzugefügt. Es generiert ein gültiges FCM-Registrierungstoken und protokolliert es.
  • MainActivity.java fügt die RecyclerView hinzu, die die Auswahlmöglichkeiten für die Aktienkategorie anzeigt.
  • SubscriptionAdapter.java implementiert RecyclerView.Adapter , der den Auswahlbildschirm für die Aktienkategorie zeichnet.
    • Jede Aktienkategorie hat einen Namen und einen Abonnementschalter daneben.
    • Das Ändern des Umschalters sollte einen FCM-Anmelde-/Abmeldeanruf für Themen auslösen.
    • Sie werden diese Aufrufe in den nächsten Abschnitten implementieren.
  • Die Klasse model/StockCategories.java enthält eine Liste aller Stock-Kategorien 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 Ziel-Android-Gerät oder Emulator aus und drücken Sie die Run-Taste.

5b27fc5b237e06b9.png

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

ff5b1a1c53231c54.png

  1. Die App erstellt ein FCM-Registrierungstoken und protokolliert es. An der Benutzeroberfläche der App ändert sich jedoch nichts.
    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 Startservercode

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 Startcode des Servers

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

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 einer Nachricht an ein FCM-Registrierungstoken.
      • sendMessageToFcmTopic : Senden Sie eine Nachricht an ein FCM-Thema.
      • sendMessageToFcmTopicCondition : Sendet eine Nachricht an eine FCM-Themenbedingung.
    • FcmSubscriptionManager.java : Diese Klasse enthält Methoden, die die Verwaltung von Themenabonnements von der Serverseite 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 auf das Zahnradsymbol neben Projektübersicht in der linken Navigationsleiste 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 und kopieren Sie sie in den messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources .
    5. Sowohl FcmSender.java als FcmSubscriptionManager.java laden die Datei service-account.json aus dem Klassenpfad mit dem folgenden Code. 8dffbee658e0bdd.png
  2. An diesem Punkt ist der Servercode fertig. Führen Sie Build -> Build Project in 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 in das Token -Feld des message gesetzt wird.
    2. Beachten Sie außerdem, wie wir die send -API der FirebaseMessaging -Schnittstelle verwendet haben.

52e4a3ec3f816473.png

  1. Dies sollte eine Nachricht an die App-Instanz senden, die Sie im vorherigen Schritt eingerichtet haben.
  2. Wenn sich die App-Instanz im Vordergrund befindet, sollten Sie den protokollierten Nachrichteninhalt sehen.

d3540ec1089f97dd.png

  1. Und wenn sich die App-Instanz im Hintergrund befindet, sehen Sie, dass die Nachricht in der Benachrichtigungsleiste angezeigt wird.

31203deca59c03fe.png

Toll, Sie haben Firebase Admin SDK verwendet, um Nachrichten an eine App-Instanz zu senden. Lesen Sie mehr über die Verwendung des Firebase Admin SDK auf Ihrem Server .

6. Implementieren Sie die Themen-Anmeldung/-Abmeldung

In diesem Schritt implementieren Sie Aktionen zum An- und Abmelden von Themen auf der Umschaltfläche für die Aktienkategorie der Android-App.

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

Überprüfen Sie den Code

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

6c0614199e684f6.png

  • Der Klassenkonstruktor richtet mithilfe von setOnCheckedChangeListener einen Listener für den Abonnementwechsel ein.
  • Abhängig vom Umschalter des Schalters werden Abonnement- und Abmeldeaktionen ausgeführt, indem die Methoden „ subscribeToStockCategory “ bzw. unsubscribeFromStockCategory werden.
  • Die setData Methode wird vom onBindViewHolder des RecyclerView-Adapters onBindViewHolder , um den ViewHolder mit der entsprechenden Bestandskategorie zu binden.

Themenabonnement implementieren

  1. In der Methode „ subscribeToStockCategory “ implementieren Sie den Aufruf der API „ subscribeToTopic “ 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();
          });
    }

Implementieren Sie die Abmeldung von Themen

  1. In ähnlicher Weise implementieren Sie in der Else-Bedingung den Aufruf der API „ unsubscribeFromTopic “. Etwas in der Art wie folgt:
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 Aktionen zum Abonnieren und Abbestellen auszuführen. Es würde in etwa so aussehen:

Abonnieren

Abbestellen

7. Senden Sie Ihre erste Themennachricht

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

Implementieren Sie die serverseitige Integration zum Senden von Themennachrichten

  1. Wechseln 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 ist eine Zeichenfolge der Form: /topics/<Topic Name> . 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 anstelle des Token -Felds des message das Topic -Feld 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 der FirebaseMessaging -Instanz hinzu, um die Nachricht zu senden (identisch mit dem send-Aufruf in der sendMessageToFcmRegistrationToken Funktion).
FirebaseMessaging.getInstance().send(message);
  1. Aktualisieren Sie schließlich die main und aktivieren Sie den Aufruf nur für die sendMessageToFcmTopic Funktion.

9a6aa08dd7c28898.png

Nachricht senden und Empfang bestätigen

  1. Bevor Sie die Themennachricht senden, stellen Sie 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 .
  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 Topic Condition Message

Die Themenbedingungsfunktion ermöglicht es Ihnen, Nachrichten an eine Kombination von Themen zu senden, wodurch Sie eine ausdrucksstärkere Zielgruppendefinition bereitstellen können.

Ziehen Sie beispielsweise in unserer StockNews-App die Möglichkeit in Betracht, Nachrichten an eine Gruppe von App-Instanzen zu senden, die entweder Technologie- oder Automobilthemen abonniert haben. Ein solcher Fall kann beispielsweise eintreten, wenn ein bemerkenswertes Ereignis im Zusammenhang mit Waymo vorliegt.

Topics ermöglicht es Ihnen, Ihre Kombination in Form eines booleschen Ausdrucks mit den folgenden Operatoren auszudrücken

  • && : Logisches UND. Beispiel: 'Technology' in topics && 'Automotive' in topics – Zielt nur auf die App-Instanzen ab, die sowohl Technologie- als auch Automobilthemen 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 zum Gruppieren. Beispiel: 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) – Zielt nur auf App-Instanzen ab, die die Themen „Technologie“ und „Automobil“ oder „Energie“ abonniert haben.

Lesen Sie mehr darüber, wie Sie Sendeanforderungen für die Verwendung dieser Funktionalität erstellen.

Implementieren Sie die serverseitige Integration zum Senden von Topic-Condition-Meldungen

  1. Springen Sie zurück im Servercode 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 es einstellen auf: 'Technology' in topics && 'Automotive' in topics .
  2. Erstellen Sie in den nächsten Zeilen ein neues message (ähnlich dem in der sendMessageToFcmTopic Funktion definierten).
    1. Der Unterschied besteht darin, dass Sie anstelle des Felds „ Topic “ des Objekts 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 der FirebaseMessaging -Instanz hinzu, um die Nachricht zu senden (identisch mit dem send-Aufruf in der sendMessageToFcmTopic Funktion).
FirebaseMessaging.getInstance().send(message);
  1. Aktualisieren Sie abschließend die main Funktion und aktivieren Sie den Aufruf nur für die sendMessageToFcmTopicCondition Funktion.

db9588d40d2a0da6.png

Senden Sie die Nachricht und bestätigen Sie den Empfang

  1. Stellen Sie vor dem Senden der Themennachricht 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 Automotive-Themen abonnieren.
  2. Sie können jetzt Ihre Themennachricht senden, indem Sie die main von FcmSender.java .
  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 Technologie-Thema abmelden und die Nachricht über die Bedingung des Themas erneut senden. Beachten Sie, dass die Nachricht nicht von der App-Instanz empfangen wird.

9. Zusammenfassung

Fassen wir kurz zusammen, was Sie bis zu diesem Punkt gelernt haben.

  • So initiieren Sie eine Themenanmeldung/-abmeldung von einer App-Instanz.
  • Senden einer Nachricht an das Thema und Verifizieren des Empfangs bei abonnierten App-Instanzen.
  • Senden einer Nachricht an eine Topic-Bedingung und Verifizieren 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/abbestellen können, ohne Aufrufe von der Clientseite instanziieren zu müssen.

c0dc20655d392690.gif

10. Verwalten Sie Themenabonnements von der Serverseite

Bisher werden in diesem Codelab alle Themenabonnements und -abmeldungen von einer App-Instanz initiiert.

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

In diesem Abschnitt erfahren Sie, wie Sie das Firebase Admin SDK verwenden , um einen Stapel von FCM-Registrierungstoken für ein Thema zu abonnieren und abzubestellen, indem Sie Anrufe von der Serverseite tätigen.

Implementieren Sie das serverseitige Abonnement von FCM-Registrierungstoken für das FCM-Thema

  1. Wechseln Sie im Servercode in die Klasse FcmSubscriptionManager.java . Suchen Sie die Methode mit dem subscribeFcmRegistrationTokensToTopic . Hier implementieren Sie den Aufruf der API „ subscribeToTopic “.

5d5709e7b3cbcb04.png

  1. Lassen Sie uns die App-Instanz für das Energiethema abonnieren. 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-Registrierungstoken darstellen, für die Sie Themenabonnements erstellen möchten.
    2. topicName : Der Themenname für das Energiethema, dh /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 die TopicManagementResponse auf einige allgemeine Ergebnisstatistiken überprüfen. Beispielsweise das Drucken der Anzahl erfolgreich erstellter Themenabonnements mit getSuccessCount .
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Aktivieren Sie schließlich in der main nur subscribeFcmRegistrationTokensToTopic der FunktionscribeFcmRegistrationTokensToTopic.

Abonnement erstellen und Themennachricht senden

  1. An diesem Punkt können Sie das Themenabonnement erstellen und eine Nachricht daran senden.
  2. Führen Sie die main der Klasse FcmSubscriptionManager.java aus. Dadurch wird ein Themenabonnement erstellt.
  3. Richten Sie nun den Code ein, um die Nachricht zu senden. Ähnlich wie früher,
    1. Suchen Sie in der FcmSender.java sendMessageToFcmTopic der Funktion sendMessageToFcmTopic.
    2. Setzen Sie den topicName auf das Energiethema, dh /topics/Energy .
    3. Erstellen Sie ein Message -Objekt und richten Sie es mithilfe von setTopic auf das Thema aus.
    4. Aktualisieren Sie schließlich die main Methode, um nur die sendMessageToFcmTopic Funktion 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-Registrierungstoken für das FCM-Thema

  1. Verwenden Sie für die serverseitige Abmeldung von Themen diese unsubscribeFromTopic -API. Sie fügen den relevanten Code zur Funktion unsubscribeFcmRegistrationTokensFromTopic der Klasse FcmSubscriptionManager.java .

8d9e8ea9d34016bd.png

  1. Das Implementieren des serverseitigen Abmeldecodes und das Validieren seiner Wirkung durch Senden einer Topic-Nachricht 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. Dies vereinfacht Ihre Fähigkeit, Ihre Benutzer zeitnah mit relevanten Inhalten zu erreichen.

947def3eb33b1e4a.gif

Was kommt als nächstes?

Nachdem Sie Ihr Codelab abgeschlossen haben, sollten Sie erwägen, Themen für andere Plattformen auszuprobieren, indem Sie die folgenden Leitfäden verwenden:

Referenzdokumente