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
- 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).
- Sie können die Aktivierung von Google Analytics überspringen. Für die Zwecke dieses Codelabs benötigen Sie es nicht. Klicken Sie auf Weiter.
- 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.
Konfigurieren Sie Android
- 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:
- Der wichtige Wert, der angegeben werden muss, ist der Name des Android-Pakets . Stellen Sie es auf
com.ticker.stocknews
ein.- 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:- Öffnen Sie im StockNewsApp- Verzeichnis die Datei
app/src/main/AndroidManifest.xml
. - Suchen Sie im
manifest
nach dem Zeichenfolgenwert despackage
. Dieser Wert ist der Android-Paketname.
- Öffnen Sie im StockNewsApp- Verzeichnis die Datei
- Der hier angegebene Paketname muss mit dem in der
- Fügen Sie im Firebase-Dialogfeld den kopierten Paketnamen in das Feld „Android-Paketname“ ein.
- Sie benötigen für dieses Codelab kein Debug-Signaturzertifikat SHA-1 , da diese App nicht veröffentlicht wird. Lassen Sie dieses Feld leer.
- Klicken Sie auf App registrieren .
- Folgen Sie in der Firebase-Konsole den Anweisungen zum Herunterladen der Konfigurationsdatei
google-services.json
. - 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.
- Kopieren Sie die Datei
google-services.json
(die Sie gerade heruntergeladen haben) in das Verzeichnismessaging/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.)
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:
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.
- In
AndroidManifest.xml
ist bereits einMESSAGING_EVENT
Rückrufhandler hinzugefügt.- Dieser Handler,
StockNewsMessagingService.java
erweitert dieFirebaseMessagingService
Klasse, die verschiedene Firebase Cloud Messaging-bezogene Funktionen bereitstellt. Weitere Informationen finden Sie in der FirebaseMessagingService-Dokumentation .
- 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.- Weitere Informationen zu den Unterschieden zwischen der Zustellung und Verarbeitung von Hintergrund- und Vordergrundnachrichten finden Sie unter Empfangen von Nachrichten in einer Android-App .
- Dieser Handler,
- Außerdem wird in
AndroidManifest.xml
eine Android-Application
mit dem NamenStockNewsApplication
bereitgestellt.- Diese Klasse ist die erste, die beim Start der App instanziiert wird.
- In der
onCreate
Funktion derStockNewsApplication
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 dieRecyclerView
hinzu, die die Auswahlmöglichkeiten für die Bestandskategorie anzeigt. -
SubscriptionAdapter.java
implementiertRecyclerView.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.
Führen Sie die Starter-App aus
- Verbinden Sie Ihr Android-Gerät mit Ihrem Computer oder starten Sie einen Emulator.
- Wählen Sie in der oberen Symbolleiste Ihr Android-Zielgerät oder Ihren Emulator aus und klicken Sie auf die Schaltfläche „Ausführen“.
- Die App-Benutzeroberfläche sieht wie folgt aus:
- Die App erstellt ein FCM-Registrierungstoken und protokolliert es. An der App-Benutzeroberfläche wird sich jedoch nichts ändern.
- Kopieren und speichern Sie das FCM-Registrierungstoken, da es in den nächsten Schritten verwendet wird.
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:
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.
- 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
- Zuerst müssen wir ein Firebase-Dienstkonto einrichten, das es dem Firebase-Admin-SDK ermöglicht, Aufrufe an FCM-APIs zu autorisieren.
- Gehen Sie zur Firebase-Konsole, klicken Sie in der linken Navigationsleiste auf das Zahnradsymbol neben „Projektübersicht“ und wählen Sie „Projekteinstellungen“ aus.
- Wählen Sie auf der Einstellungsseite Dienstkonten aus und klicken Sie auf Dienstkonto erstellen .
- Klicken Sie nun auf die Schaltfläche „Neuen privaten Schlüssel generieren“ und ein automatischer Download Ihrer Schlüsseldatei beginnt.
- Benennen Sie die Schlüsseldatei in
service-account.json
um und kopieren Sie sie in den Ordnermessaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
. - Sowohl
FcmSender.java
als auchFcmSubscriptionManager.java
laden die Dateiservice-account.json
aus dem Klassenpfad mit dem folgenden Code.
- Zu diesem Zeitpunkt ist der Servercode fertig. Führen Sie Build -> Build Project aus der oberen Menüleiste aus.
Senden einer Testnachricht
- Suchen Sie in
FcmSender.java
die FunktionsendMessageToFcmRegistrationToken
und fügen Sie das FCM-Registrierungstoken, das Sie aus dem Abschnitt „Starter-App ausführen“ kopiert haben, in das FeldregistrationToken
ein. - Kommentieren Sie in der
main
nur die FunktionsendMessageToFcmRegistrationToken
aus und klicken Sie auf „Ausführen“, um den Code auszuführen.- Beobachten Sie, wie das FCM-Registrierungstoken im Feld
Token
desmessage
festgelegt wird. - Beachten Sie außerdem, wie wir die
send
API derFirebaseMessaging
Schnittstelle verwendet haben.
- Beobachten Sie, wie das FCM-Registrierungstoken im Feld
- Dadurch sollte eine Nachricht an die App-Instanz gesendet werden, die Sie im vorherigen Schritt eingerichtet haben.
- Wenn sich die App-Instanz im Vordergrund befindet, sollte der protokollierte Nachrichteninhalt angezeigt werden.
- Wenn sich die App-Instanz im Hintergrund befindet, wird die Meldung in der Benachrichtigungsleiste angezeigt.
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 KlasseRecyclerViewViewHolder
.
- 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 vomonBindViewHolder
des RecyclerView-Adapters aufgerufen, um den ViewHolder mit der entsprechenden Stock-Kategorie zu binden.
Themenabonnement implementieren
- In der
subscribeToStockCategory
Methode implementieren Sie den Aufruf dersubscribeToTopic
API desFirebaseMessaging
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
- 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
- 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
- Springen Sie im Servercode zu
FcmSender.java
und suchen Sie die Methode mit dem NamensendMessageToFcmTopic
.
- 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
.
- Es handelt sich um eine Zeichenfolge der Form:
- Erstellen Sie in den nächsten Zeilen ein neues
message
(ähnlich dem in der FunktionsendMessageToFcmRegistrationToken
definierten).- Der Unterschied besteht darin, dass Sie statt des Felds
Token
desmessage
das FeldTopic
festlegen.
- Der Unterschied besteht darin, dass Sie statt des Felds
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();
- Fügen Sie nun den Aufruf zur
FirebaseMessaging
Instanz hinzu, um die Nachricht zu senden (identisch mit dem Sendeaufruf in der FunktionsendMessageToFcmRegistrationToken
).
FirebaseMessaging.getInstance().send(message);
- Aktualisieren Sie abschließend die
main
und aktivieren Sie den Aufruf nur fürsendMessageToFcmTopic
Funktion.
Nachricht senden und Empfang bestätigen
- Stellen Sie vor dem Senden der Themennachricht zunächst sicher, dass Ihre App-Instanz das Thema abonniert hat, an das Sie senden möchten.
- Dies kann durch Umlegen des entsprechenden Schalters erfolgen. Zum Beispiel:
- Sie können jetzt Ihre Themennachricht senden, indem Sie die
main
vonFcmSender.java
ausführen. - Wie zuvor sollten Sie den Nachrichtenempfang auf der App-Instanz beobachten können.
- App-Instanz im Vordergrund
- App-Instanz im Hintergrund
- 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
- Zurück im Servercode springen Sie zu
FcmSender.java
und suchen Sie die Methode mit dem NamensendMessageToFcmTopicCondition
.
- 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
. - Erstellen Sie in den nächsten Zeilen ein neues
message
(ähnlich dem in der FunktionsendMessageToFcmTopic
definierten).- Der Unterschied besteht darin, dass Sie nicht das Feld
Topic
des Objekts, sondern das Feld „Condition
festlegen.
- Der Unterschied besteht darin, dass Sie nicht das Feld
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();
- Fügen Sie nun den Aufruf zur
FirebaseMessaging
Instanz hinzu, um die Nachricht zu senden (identisch mit dem Sendeaufruf in der FunktionsendMessageToFcmTopic
).
FirebaseMessaging.getInstance().send(message);
- Aktualisieren Sie abschließend die
main
und aktivieren Sie den Aufruf nur für die FunktionsendMessageToFcmTopicCondition
.
Senden Sie die Nachricht und bestätigen Sie den Empfang
- 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.
- Sie können jetzt Ihre Themennachricht senden, indem Sie die
main
vonFcmSender.java
ausführen. - Wie zuvor sollten Sie den Nachrichtenempfang auf der App-Instanz beobachten können.
- App-Instanz im Vordergrund
- App-Instanz im Hintergrund
- 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.
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
- Springen Sie im Servercode in die Klasse
FcmSubscriptionManager.java
. Suchen Sie die MethodesubscribeFcmRegistrationTokensToTopic
. Hier implementieren Sie den Aufruf dersubscribeToTopic
API.
- Abonnieren wir die App-Instanz für das Thema „Energie“. Geben Sie dazu zunächst Daten für die folgenden beiden Felder an:
-
registrationTokens
: eine durch Kommas getrennte Liste von Zeichenfolgen, die die FCM-Registrierungstokens darstellen, für die Sie Themenabonnements erstellen möchten. -
topicName
: der Themenname für das Energiethema, z. B./topics/Energy
.
-
- Implementieren Sie in den nächsten Zeilen den Aufruf wie folgt:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic( registrationTokens, topicName);
- Sie können
TopicManagementResponse
auf einige allgemeine Ergebnisstatistiken untersuchen. Zum Beispiel das Drucken der Anzahl erfolgreich erstellter Themenabonnements mitgetSuccessCount
.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- Schließlich aktivieren Sie in der
main
nur Aufrufe der FunktionsubscribeFcmRegistrationTokensToTopic
.
Abonnement erstellen und Themennachricht senden
- An diesem Punkt können Sie das Themenabonnement erstellen und ihm eine Nachricht senden.
- Führen Sie die
main
der KlasseFcmSubscriptionManager.java
aus. Dadurch wird ein Themenabonnement erstellt. - Richten Sie nun den Code zum Senden der Nachricht ein. Ähnlich wie vorher,
- Suchen Sie in
FcmSender.java
nach der FunktionsendMessageToFcmTopic
. - Legen Sie den
topicName
auf das Energiethema fest, z. B./topics/Energy
. - Erstellen Sie ein
Message
Objekt und richten Sie es mithilfe vonsetTopic
auf das Thema aus. - Aktualisieren Sie abschließend die
main
, um nur die FunktionsendMessageToFcmTopic
zu aktivieren.
- Suchen Sie in
- Führen Sie die
main
vonFcmSender.java
aus. Dadurch wird die Nachricht an Ihre App-Instanz gesendet und Sie können sie wie folgt in Ihrer App beobachten.- App-Instanz im Vordergrund
- App-Instanz im Hintergrund
Implementieren Sie die serverseitige Abmeldung von FCM-Registrierungstokens für das FCM-Thema
- Für serverseitige Themenabmeldungen verwenden Sie diese
unsubscribeFromTopic
API. Sie fügen den relevanten Code zur FunktionunsubscribeFcmRegistrationTokensFromTopic
“ der KlasseFcmSubscriptionManager.java
hinzu.
- 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.
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: