1. Wprowadzenie
Cele
Z tego ćwiczenia w Codelabs dowiesz się, jak przygotować wieloplatformową aplikację, aby wysyłać wiadomości push do różnych podgrup instancji aplikacji za pomocą tematów FCM.
Po zakończeniu możesz wykorzystać infrastrukturę FCM do zarządzania tymi podgrupami, a także grupowych komunikatów push w podgrupach.
Omówienie tematów
Tematy to obsługiwany przez infrastrukturę FCM sposób na docieranie do podgrup instancji aplikacji z wiadomościami.
FCM udostępnia interfejsy API umożliwiające wysyłanie wiadomości i utrzymywanie subskrypcji tych tematów. Powiązanie i usunięcie powiązania instancji aplikacji z tematem jest nazywane odpowiednio subskrybowaniem i anulowaniem subskrypcji
Tematy powinny być używane w przypadku treści dostępnych publicznie. Dotyczy to na przykład wiadomości o pogodzie. Jeśli chcesz wysyłać wiadomości poufne do użytkowników, użyj pakietu Firebase Admin SDK do grupowania wiadomości na wielu urządzeniach.
Multicasting oparty na tematach jest zoptymalizowany pod kątem przepustowości.
Czego się nauczysz
- Jak subskrybować tematy (i anulować ich subskrypcję) w aplikacji mobilnej.
- Jak wysyłać wiadomości push w trybie multicast za pomocą tematów.
- Jak wysyłać wiadomości do kombinacji tematów przy użyciu warunków dotyczących tematów.
- Jak zarządzać subskrypcjami tematów po stronie serwera oraz zbiorczo dokonywać i anulować subskrypcje.
Co utworzysz
- Aplikacja na Androida, która subskrybuje tematy lub anuluje ich subskrypcję i odbiera wiadomości wysłane do tych tematów.
- integrację po stronie serwera przy użyciu pakietu SDK Firebase Admin, która będzie używana do wysyłania wiadomości tematycznych przez interfejsy FCM API;
Czego potrzebujesz
- wybraną przeglądarkę, na przykład Chrome;
- IntelliJ IDEA IDE do tworzenia aplikacji w Javie.
- Podczas instalacji pamiętaj, aby włączyć obsługę Gradle.
- IDE Android Studio do tworzenia aplikacji na Androida.
- Urządzenie, na którym chcesz uruchomić aplikację na Androida. Jeden z następujących:
- Emulator Androida. (Wymaga konfiguracji w Android Studio).
- Fizyczne urządzenie z Androidem podłączone do komputera i ustawione w trybie programisty.
- Konto Google do tworzenia projektu Firebase i zarządzania nim.
2. Przygotowanie
Pobierz kod
Sklonuj repozytorium GitHub, używając wiersza poleceń:
git clone https://github.com/firebase/quickstart-android.git fcm-codelab
Przykładowy kod zostanie skopiowany do katalogu fcm-codelab
.
cd fcm-codelab
Aplikacja startowa tego ćwiczenia w programie znajduje się w katalogu messaging
gałęzi fcm-topics-codelab
. Aby uzyskać kod startowy, wykonaj te czynności. Zawiera 2 katalogi: StockNewsApp
i StockNewsServer
. Pierwszy z nich zawiera początkową aplikację na Androida, a drugi zawiera kod startowy po stronie serwera.
git checkout fcm-topics-codelab cd messaging/fcm-topics-codelab/starter
Ukończona wersja tego ćwiczenia w Codelabs znajduje się w katalogu messaging/fcm-topics-codelab/completed
.
Tworzenie projektu Firebase
- W konsoli Firebase kliknij Dodaj projekt, nadaj projektowi Firebase nazwę StockNews i kliknij Dalej. Uwaga: zapamiętaj identyfikator swojego projektu Firebase (lub kliknij ikonę Edytuj, aby ustawić preferowany identyfikator projektu).
- Możesz pominąć włączanie Google Analytics. Na potrzeby tego ćwiczenia z programowania nie jest ono potrzebne. Kliknij Dalej.
- Kliknij Utwórz projekt.
Gratulacje! Twój projekt Firebase został właśnie utworzony. Teraz możesz kliknąć nazwę projektu, aby otworzyć konsolę.
3. Konfiguracja aplikacji Firebase na poziomie platformy
Większość zmian w kodzie wymaganych do włączenia obsługi Firebase jest już wprowadzanych w projekcie, nad którym pracujesz. Aby jednak dodać obsługę platform mobilnych, musisz:
- Zarejestruj odpowiednią platformę w projekcie Firebase
- Pobierz plik konfiguracji określonej platformy i dodaj go do kodu.
Na potrzeby tego ćwiczenia w programie dodamy aplikację Firebase na Androida.
Skonfiguruj Androida
- W konsoli Firebase u góry lewego paska nawigacyjnego po lewej stronie kliknij Ustawienia, a potem na stronie Ogólne kliknij ikonę Android w sekcji Twoje aplikacje.
Zobaczysz następujące okno :
- Najważniejszą wartością jest nazwa pakietu na Androida. Ustaw na
com.ticker.stocknews
.- Podana tutaj nazwa pakietu musi być taka sama jak podana w polu
AndroidManifest.xml
kodu startowego StockNewsApp. Jeśli chcesz zlokalizować urządzenie lub je zmienić, wykonaj te czynności:- W katalogu StockNewsApp otwórz plik
app/src/main/AndroidManifest.xml
. - W elemencie
manifest
znajdź wartość ciągu znaków atrybutupackage
. Ta wartość to nazwa pakietu na Androida.
- W katalogu StockNewsApp otwórz plik
- Podana tutaj nazwa pakietu musi być taka sama jak podana w polu
- W oknie Firebase wklej nazwę skopiowanego pakietu w polu Nazwa pakietu na Androida.
- Na potrzeby tego ćwiczenia w Codelabs nie potrzebujesz certyfikatu podpisywania debugowania SHA-1, ponieważ ta aplikacja nie zostanie opublikowana. Pozostaw to pole puste.
- Kliknij Zarejestruj aplikację.
- Następnie w konsoli Firebase postępuj zgodnie z instrukcjami, aby pobrać plik konfiguracji
google-services.json
. - Pozostałe kroki konfiguracji możesz pominąć, ponieważ wszystkie pozostałe elementy są już skonfigurowane w kodzie aplikacji startowej. Swoją aplikację zobaczysz na stronie głównej konsoli Firebase.
- Skopiuj pobrany przed chwilą plik
google-services.json
do katalogumessaging/fcm-topics-codelab/starter/StockNewsApp/app
.
4. Tworzenie i uruchamianie aplikacji
Możesz już zacząć pracę nad aplikacją. Najpierw skompiluj i uruchom aplikację.
Importowanie aplikacji startowej
Uruchom Android Studio i zaimportuj messaging/fcm-topics-codelab/starter/StockNewsApp
z katalogu z kodem startowym.
Po wczytaniu projektu możesz zobaczyć alert informujący o tym, że Git nie śledzi wszystkich lokalnych zmian. Kliknij „Ignoruj”. lub „X” w prawym górnym rogu. Nie przekażesz żadnych zmian z powrotem do repozytorium Git.
Jeśli jesteś w widoku Androida, w lewym górnym rogu okna projektu powinien być widoczny obraz podobny do tego poniżej. Jeśli jesteś w widoku Projekt, musisz rozwinąć projekt, aby zobaczyć to samo.
Pamiętaj, że Android Studio może potrzebować kilku sekund na skompilowanie projektu w tle po raz pierwszy. W tym czasie na pasku stanu u dołu Android Studio będzie widoczny wskaźnik postępu:
Zalecamy zaczekać, aż ten proces się zakończy, zanim wprowadzisz zmiany w kodzie. Dzięki temu Android Studio pobierze wszystkie niezbędne komponenty.
Dodatkowo, jeśli zobaczysz pytanie „Załaduj ponownie, aby zmiany języka zostały wprowadzone?”. lub podobną, wybierz opcję „Tak”.
Konfiguracja emulatora
Jeśli potrzebujesz pomocy przy konfigurowaniu emulatora Androida, przeczytaj artykuł Uruchamianie aplikacji.
Kod startowy aplikacji na Androida
- Kod startowy to prosta aplikacja na Androida o minimalnej funkcjonalności i interfejsie.
- Zależność z pakietem SDK Firebase-messaging została już dodana do pliku
app/build.gradle
.
- W
AndroidManifest.xml
dodano już moduł obsługi wywołania zwrotnegoMESSAGING_EVENT
.- Ten moduł obsługi (
StockNewsMessagingService.java
) rozszerza klasęFirebaseMessagingService
, która udostępnia różne funkcje związane z Komunikacją w chmurze Firebase (FCM). Więcej informacji znajdziesz w dokumentacji usługi FirebaseMessagingService.
- Funkcja
onNewToken
jest wywoływana po utworzeniu lub odświeżeniu tokena rejestracji FCM. Więcej informacji znajdziesz w artykule Monitorowanie generowania tokenów. - Funkcja
onMessageReceived
jest wywoływana po otrzymaniu wiadomości, gdy aplikacja działa na pierwszym planie. Obecnie rejestruje tylko otrzymaną wiadomość.- Zapoznaj się z artykułem Odbieranie wiadomości w aplikacji na Androida, aby dowiedzieć się więcej o różnicach między dostarczaniem wiadomości w tle i na pierwszym planie oraz obsługą ich.
- Ten moduł obsługi (
- W systemie
AndroidManifest.xml
dostępna jest też klasa AndroidaApplication
o nazwieStockNewsApplication
.- Ta klasa będzie pierwszą klasą, która zostanie utworzona przy uruchamianiu aplikacji.
- W funkcji
onCreate
klasyStockNewsApplication
dodawane jest wywołanie tworzenia tokena rejestracji FCM. Wygeneruje on prawidłowy token rejestracji FCM i zapisze go.
MainActivity.java
dodaje elementRecyclerView
, który wyświetla opcje kategorii akcji.SubscriptionAdapter.java
stosuje zasadęRecyclerView.Adapter
, co powoduje wyświetlenie ekranu wyboru kategorii akcji.- Obok każdej kategorii akcji znajduje się nazwa oraz przełącznik subskrypcji.
- Zmiana przełącznika powinna spowodować wywołanie subskrypcji tematu FCM lub anulowanie subskrypcji.
- Wywołanie te wdrożysz w kolejnych sekcjach.
- Klasa
model/StockCategories.java
zawiera listę wszystkich kategorii notowań giełdowych i powiązanych z nimi nazw tematów.
Uruchamianie aplikacji startowej
- Podłącz urządzenie z Androidem do komputera lub uruchom emulator.
- Na górnym pasku narzędzi wybierz docelowe urządzenie z Androidem lub emulator i naciśnij przycisk uruchamiania.
- Interfejs aplikacji będzie wyglądać tak:
- Aplikacja utworzy token rejestracji FCM i zapisze go. Interfejs aplikacji nie ulegnie jednak zmianie.
- Skopiuj i zapisz token rejestracji FCM, ponieważ będzie potrzebny w następnych krokach.
5. Wyślij wiadomość testową
Teraz możesz wysłać wiadomość testową do instancji aplikacji skonfigurowanej w ostatnim kroku.
Importowanie kodu serwera startowego
Uruchom IntelliJ IDEA i otwórz projekt messaging/fcm-topics-codelab/starter/StockNewsServer
.
Widok projektu na lewym pasku nawigacyjnym powinien wyglądać mniej więcej tak:
Uwaga: kompilowanie projektu z uwzględnieniem wymaganych zależności może zająć IntellIj IDEA kilka minut.
Zapoznaj się z kodem startowym serwera
- Kod startowy serwera to projekt Java oparty na Gradle.
- Plik
build.gradle
zawiera już zależność z dodanym do niego firebase-admin SDK. Zapewnia on dostęp do różnych funkcji wysyłania wiadomości w FCM.
- Dostępne są jeszcze dwie klasy, np.:
FcmSender.java
: ta klasa zawiera następujące metody uwagi:initFirebaseSDK
: inicjuje pakiet SDK firebase-admin.sendMessageToFcmRegistrationToken
: wyślij wiadomość do tokena rejestracji FCM.sendMessageToFcmTopic
: wyślij wiadomość w temacie FCM.sendMessageToFcmTopicCondition
: wyślij wiadomość do warunku tematu FCM.
FcmSubscriptionManager.java
: ta klasa zawiera metody, które umożliwiają zarządzanie subskrypcjami tematów po stronie serwera.initFirebaseSDK
: inicjuje pakiet SDK firebase-admin.subscribeFcmRegistrationTokensToTopic
: zasubskrybuj tokeny rejestracji FCM w temacie FCM.unsubscribeFcmRegistrationTokensFromTopic
: anuluj subskrypcję tokenów rejestracji FCM w temacie FCM.
Konfigurowanie kodu serwera
- Najpierw musimy skonfigurować konto usługi Firebase, które umożliwia pakietowi SDK firebase-admin autoryzowanie wywołań interfejsów API FCM.
- Otwórz konsolę Firebase, kliknij ikonę koła zębatego obok opcji Przegląd projektu na lewym pasku nawigacyjnym i wybierz Ustawienia projektu.
- Na stronie ustawień wybierz Konta usługi i kliknij Utwórz konto usługi.
- Teraz kliknij przycisk Wygeneruj nowy klucz prywatny. Rozpocznie się automatyczne pobieranie pliku klucza.
- Zmień nazwę pliku klucza na
service-account.json
i skopiuj go do folderumessaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
. - Zarówno
FcmSender.java
, jak iFcmSubscriptionManager.java
wczytują plikservice-account.json
ze ścieżki klasy przy użyciu poniższego kodu.
- Na tym etapie kod serwera jest gotowy. Uruchom kompilację -> Utwórz projekt na górnym pasku menu.
Wysyłanie wiadomości testowej
- W
FcmSender.java
znajdź funkcjęsendMessageToFcmRegistrationToken
i w poluregistrationToken
wstaw token rejestracji FCM skopiowany z sekcji Uruchom aplikację startową. - W funkcji
main
usuń znacznik komentarza tylko z funkcjisendMessageToFcmRegistrationToken
i kliknij Uruchom, aby wykonać kod.- Zwróć uwagę, jak token rejestracji FCM jest ustawiony w polu
Token
obiektumessage
. - Zobacz też, w jaki sposób korzystamy z interfejsu API
send
interfejsuFirebaseMessaging
.
- Zwróć uwagę, jak token rejestracji FCM jest ustawiony w polu
- Spowoduje to wysłanie komunikatu do instancji aplikacji skonfigurowanej w poprzednim kroku.
- Gdy instancja aplikacji działa na pierwszym planie, powinna być widoczna treść wiadomości.
- Gdy instancja aplikacji działa w tle, komunikat pojawia się na pasku powiadomień.
Super! Udało Ci się użyć pakietu Firebase Admin SDK do wysyłania wiadomości do instancji aplikacji. Dowiedz się więcej o korzystaniu z pakietu SDK Firebase Admin na serwerze.
6. Wdrażanie subskrypcji tematów lub anulowania subskrypcji
W tym kroku wdrożysz działania związane z subskrypcją tematów i ich anulowaniem za pomocą przełącznika Kategoria Notowania giełdowego w aplikacji na Androida.
Gdy użytkownik aplikacji przełączy przełącznik przy określonej kategorii akcji, zostanie wykonane wywołanie dotyczące subskrypcji tematu lub anulowania subskrypcji.
Sprawdź kod
- Przejdź do zajęć
SubscriptionAdapter.java
w kodzie aplikacji na Androida i znajdź klasęRecyclerViewViewHolder
.
- Konstruktor klas konfiguruje detektor przełącznika subskrypcji za pomocą metody
setOnCheckedChangeListener
. - W zależności od przełącznika działania związane z subskrypcją i anulowaniem subskrypcji są wykonywane przez wywoływanie metod
subscribeToStockCategory
iunsubscribeFromStockCategory
. - Metoda
setData
jest wywoływana przezonBindViewHolder
adaptera RecyclerView, aby powiązać obiekt ViewHolder z odpowiednią kategorią akcji.
Wdróż subskrypcję tematów
- W metodzie
subscribeToStockCategory
wdrożysz wywołanie interfejsu APIsubscribeToTopic
obiektuFirebaseMessaging
. Kod może wyglądać np. tak:
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(); }); }
Implementowanie anulowania subskrypcji tematów
- I podobnie, w warunku innym, wdrożysz wywołanie interfejsu API
unsubscribeFromTopic
. Oto przykłady:
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(); }); }
Wypróbuj
- Uruchom aplikację i przełącz opcje Kategoria akcji, aby wykonać działania Subskrybuj i Anuluj subskrypcję. Wygląda to mniej więcej tak:
Subskrybuj | Anuluj subskrypcję |
7. Wysyłanie pierwszej wiadomości w temacie
W tym kroku wdrożysz kod po stronie serwera, aby wysyłać wiadomości w temacie FCM.
Wdróż integrację po stronie serwera w celu wysyłania wiadomości z tematu
- W kodzie serwera przejdź do
FcmSender.java
i znajdź metodę o nazwiesendMessageToFcmTopic
.
- W pierwszym wierszu wpisz temat FCM, do którego chcesz wysłać wiadomość.
- Jest to ciąg znaków w formacie:
/topics/<Topic Name>
. Na przykład:/topics/Technology
.
- Jest to ciąg znaków w formacie:
- W następnych wierszach utwórz nowy obiekt
message
(podobny do obiektu zdefiniowanego w funkcjisendMessageToFcmRegistrationToken
).- Różnica będzie polegać na tym, że zamiast ustawiać pole
Token
obiektumessage
, ustawisz poleTopic
.
- Różnica będzie polegać na tym, że zamiast ustawiać pole
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();
- Teraz dodaj wywołanie do instancji
FirebaseMessaging
, aby wysłać wiadomość (identyczne z wywołaniem „send” używanym w funkcjisendMessageToFcmRegistrationToken
).
FirebaseMessaging.getInstance().send(message);
- Na koniec zaktualizuj funkcję
main
i włącz wywołanie tylko funkcjisendMessageToFcmTopic
.
Wysyłanie wiadomości i potwierdzanie odbioru
- Przed wysłaniem wiadomości tematu upewnij się, że wystąpienie aplikacji subskrybuje temat, do którego chcesz ją wysłać.
- Można to zrobić, przesuwając odpowiedni przełącznik. Przykład:
- Możesz teraz wysłać wiadomość związaną z tematem, wykonując funkcję
main
funkcjiFcmSender.java
. - Podobnie jak wcześniej, powinno być widoczne potwierdzenie wiadomości w instancji aplikacji.
- Instancja aplikacji na pierwszym planie
- Instancja aplikacji w tle
- Dodatkowe informacje: spróbuj anulować subskrypcję tematu, do którego wysłałeś wiadomość, i ponownie wyślij wiadomość. Możesz zauważyć, że wiadomość nie jest dostarczana do instancji aplikacji.
8. Wysyłam pierwszą wiadomość dotyczącą warunku tematu
Funkcja warunków dotyczących tematów umożliwia wysyłanie wiadomości do kombinacji tematów, co pozwala na bardziej wyraziste definicje odbiorców.
Na przykład w aplikacji StockNews możesz rozważyć możliwość wysyłania wiadomości do grupy instancji aplikacji, które subskrybują tematy związane z technologią lub motoryzacją. Może się tak zdarzyć na przykład wtedy, gdy zdarzy się coś interesującego z udziałem Waymo.
Funkcja Topics API umożliwia wyrażenie kombinacji w postaci wyrażenia logicznego z zastosowaniem następujących operatorów
- & : logiczne ORAZ. Na przykład
'Technology' in topics && 'Automotive' in topics
– kieruje reklamy tylko na wystąpienia aplikacji, które subskrybują zarówno tematy związane z technologią, jak i tematami motoryzacyjnymi. - || : logiczne LUB. Na przykład
'Technology' in topics || 'Automotive' in topics
– kieruje reklamy na wystąpienia aplikacji, które subskrybują tematy związane z technologią lub motoryzacją. - () : nawiasy służące do grupowania. Na przykład
'Technology' in topics && ('Automotive' in topics || 'Energy' in topics)
– kieruje reklamy tylko na wystąpienia aplikacji, które subskrybują tematy związane z technologią i energią.
Dowiedz się więcej o tworzeniu żądań wysyłania w celu korzystania z tej funkcji.
Wdróż integrację po stronie serwera w celu wysyłania wiadomości z warunkami dotyczącymi tematu
- Po powrocie do kodu serwera przejdź do
FcmSender.java
i znajdź metodę o nazwiesendMessageToFcmTopicCondition
.
- W pierwszym wierszu zmiennej
topicCondition
podaj warunek tematu, do którego ma zostać wysłana wiadomość. Możesz ustawić tę wartość:'Technology' in topics && 'Automotive' in topics
. - W następnych wierszach utwórz nowy obiekt
message
(podobny do obiektu zdefiniowanego w funkcjisendMessageToFcmTopic
).- Różnica będzie polegać na tym, że zamiast ustawiać pole
Topic
obiektu, skonfigurujesz poleCondition
.
- Różnica będzie polegać na tym, że zamiast ustawiać pole
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();
- Teraz dodaj wywołanie do instancji
FirebaseMessaging
, aby wysłać wiadomość (identyczne z wywołaniem „send” używanym w funkcjisendMessageToFcmTopic
).
FirebaseMessaging.getInstance().send(message);
- Na koniec zaktualizuj funkcję
main
i włącz wywołanie tylko funkcjisendMessageToFcmTopicCondition
.
Wysyłanie wiadomości i potwierdzanie odbioru
- Przed wysłaniem wiadomości tematu upewnij się, że wystąpienie aplikacji spełnia określony warunek tematu, subskrybując instancję aplikacji zarówno na tematy Technologia, jak i Motoryzacja.
- Możesz teraz wysłać wiadomość związaną z tematem, wykonując funkcję
main
funkcjiFcmSender.java
. - Podobnie jak wcześniej, powinno być widoczne potwierdzenie wiadomości w instancji aplikacji.
- Instancja aplikacji na pierwszym planie
- Instancja aplikacji w tle
- Dodatkowo: możesz teraz anulować subskrypcję w temacie Technologia i ponownie wysłać wiadomość dotyczącą warunku tematu. Zwróć uwagę, że komunikat nie jest odebrany przez instancję aplikacji.
9. Skrót
Podsumujmy w skrócie zdobytą przez Ciebie wiedzę.
- Jak rozpocząć lub anulować subskrypcję tematu w instancji aplikacji.
- Wysyłanie wiadomości w temacie i weryfikowanie potwierdzenia w zasubskrybowanych instancjach aplikacji.
- Wysyłanie wiadomości do tematu i weryfikacja potwierdzenia w instancji aplikacji, która spełnia ten warunek.
W następnej sekcji dowiesz się, jak możesz subskrybować instancje aplikacji dotyczące tematów lub anulować ich subskrypcję bez konieczności tworzenia instancji połączeń po stronie klienta.
10. Zarządzaj subskrypcjami tematów po stronie serwera
Do tej pory w ramach tego ćwiczenia w Codelabs wszystkie wywołania dotyczące subskrypcji tematów i anulowania subskrypcji są inicjowane z poziomu instancji aplikacji.
W niektórych przypadkach może jednak być potrzebne zarządzanie subskrypcjami tematów po stronie serwera. Możesz na przykład zasubskrybować podgrupę istniejących użytkowników w nowym temacie, nie czekając na wdrożenie aplikacji.
Z tej sekcji dowiesz się, jak używać pakietu SDK Firebase Admin do subskrybowania i anulowania subskrypcji grupy tokenów rejestracji FCM w temacie przez wykonywanie wywołań po stronie serwera.
Implementowanie subskrypcji tokenów rejestracji FCM po stronie serwera w temacie FCM
- W kodzie serwera przejdź do klasy
FcmSubscriptionManager.java
. Znajdź metodę o nazwiesubscribeFcmRegistrationTokensToTopic
. Tutaj zaimplementujesz wywołanie interfejsu APIsubscribeToTopic
.
- Zasubskrybujmy instancję aplikacji w temacie Energia. W tym celu najpierw podaj dane w następujących dwóch polach:
registrationTokens
: rozdzielona przecinkami lista ciągów reprezentujących tokeny rejestracji FCM, dla których chcesz utworzyć subskrypcje tematów.topicName
: nazwa tematu dotyczącego tematu Energia, np./topics/Energy
.
- Wdrożenie wywołania w kilku kolejnych wierszach:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic( registrationTokens, topicName);
- Możesz sprawdzić
TopicManagementResponse
, aby zobaczyć ogólne statystyki wyników. Może to być na przykład wydrukowanie liczby subskrypcji tematów, które udało się utworzyć, przy użyciugetSuccessCount
.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- Pamiętaj też, że funkcja
main
włącza wywołania tylko funkcjisubscribeFcmRegistrationTokensToTopic
.
Tworzenie subskrypcji i wysyłanie wiadomości tematu
- Na tym etapie możesz utworzyć subskrypcję tematu i wysłać do niej wiadomość.
- Wykonaj funkcję
main
klasyFcmSubscriptionManager.java
. Spowoduje to utworzenie subskrypcji tematu. - Teraz skonfiguruj kod, aby wysłać wiadomość. Podobnie jak wcześniej,
- W
FcmSender.java
znajdź funkcjęsendMessageToFcmTopic
. - W polu
topicName
ustaw temat Energia, tzn./topics/Energy
. - Utwórz obiekt
Message
i ustaw kierowanie na temat za pomocą metodysetTopic
. - Na koniec zaktualizuj metodę
main
, aby włączyć tylko funkcjęsendMessageToFcmTopic
.
- W
- Wykonaj funkcję
main
funkcjiFcmSender.java
. Spowoduje to wysłanie wiadomości do instancji aplikacji.Możesz ją obserwować w ten sposób:- Instancja aplikacji na pierwszym planie
- Instancja aplikacji w tle
Implementowanie anulowania subskrypcji tokenów rejestracji FCM w temacie FCM
- Do anulowania subskrypcji tematów po stronie serwera możesz użyć tego interfejsu API
unsubscribeFromTopic
. Do funkcjiunsubscribeFcmRegistrationTokensFromTopic
klasyFcmSubscriptionManager.java
dodasz odpowiedni kod.
- Jedynym zadaniem jest wdrożenie kodu anulowania subskrypcji po stronie serwera i sprawdzenie jego skuteczności przez wysłanie wiadomości tematycznej.
11. Gratulacje
Gratulacje, udało Ci się wykorzystać tematy FCM do wysyłania wiadomości w trybie multicast do podgrup instancji aplikacji. Ułatwi Ci to szybkie docieranie do użytkowników z trafną treścią.
Co dalej?
Po ukończeniu ćwiczeń w Codelabs możesz wypróbować tematy na innych platformach, korzystając z tych przewodników: