Pierwsza wiadomość push multiemisji wykorzystująca tematy FCM

1. Wprowadzenie

Cele

Z tego przewodnika dowiesz się, jak skonfigurować aplikację wieloplatformową, aby można było wysyłać wiadomości push do różnych podgrup instancji aplikacji za pomocą tematów FCM.

Po zakończeniu tego procesu możesz korzystać z infrastruktury FCM do zarządzania tymi podgrupami oraz wysyłania do nich wiadomości push.

Omówienie tematów

Tematy to obsługiwany przez infrastrukturę FCM sposób docierania z wiadomościami do podgrup instancji aplikacji.

FCM udostępnia interfejsy API do wysyłania wiadomości i zarządzania subskrypcjami tych tematów. Czynność polegająca na powiązaniu instancji aplikacji z tematem i odłączeniu jej od niego nazywa się odpowiednio subskrybowaniem i anulowaniem subskrypcji.

Tematy powinny być używane w przypadku treści dostępnych publicznie. Mogą to być na przykład wiadomości o aktualizacjach pogody. Jeśli chcesz wysyłać wiadomości zawierające dane użytkownika, użyj pakietu Firebase Admin SDK do wysyłania wiadomości do wielu urządzeń.

Multicast oparty na tematach jest zoptymalizowany pod kątem przepustowości.

Czego się nauczysz

  • Jak subskrybować (i anulować subskrypcję) tematy z aplikacji mobilnej.
  • Jak wysyłać wiadomości push do wielu odbiorców przy użyciu tematów.
  • Jak wysyłać wiadomości do kombinacji tematów za pomocą warunków dotyczących tematów.
  • Jak zarządzać subskrypcjami tematów po stronie serwera oraz jak zbiorczo subskrybować i anulować subskrypcje.

Co utworzysz

  • Aplikacja na Androida, która subskrybuje tematy i rezygnuje z ich subskrypcji oraz otrzymuje wiadomości wysyłane do tych tematów.
  • Integracja po stronie serwera z użyciem pakietu Firebase Admin SDK, który będzie służyć do wysyłania wiadomości do tematów za pomocą interfejsów API FCM.

Czego potrzebujesz

  • wybraną przeglądarkę, np. Chrome;
  • IDE IntelliJ IDEA do tworzenia aplikacji w Javie.
    • Podczas instalacji włącz obsługę Gradle.
  • Środowisko programistyczne Android Studio do tworzenia aplikacji na Androida.
  • urządzenie do uruchamiania aplikacji na Androida; Jeden z tych warunków:
    • 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 z wiersza poleceń:

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

Przykładowy kod zostanie sklonowany do katalogu fcm-codelab.

cd fcm-codelab

Aplikacja początkowa do tego ćwiczenia znajduje się w katalogu messaging gałęzi fcm-topics-codelab. Aby uzyskać dostęp do kodu początkowego, wykonaj te czynności: Zawiera 2 katalogi: StockNewsAppStockNewsServer. Pierwszy zawiera aplikację na Androida, a drugi – początkowy kod po stronie serwera.

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

Ukończona wersja tego ćwiczenia znajduje się w katalogu messaging/fcm-topics-codelab/completed.

Tworzenie projektu Firebase

  1. Zaloguj się w konsoli Firebase, korzystając ze swojego konta Google.
  2. Kliknij przycisk, aby utworzyć nowy projekt, a potem wpisz jego nazwę (np. StockNews).
  3. Kliknij Dalej.
  4. Po wyświetleniu monitu przeczytaj i zaakceptuj warunki usługi Firebase, a potem kliknij Dalej.
  5. (Opcjonalnie) Włącz w konsoli Firebase pomoc AI (nazywaną „Gemini w Firebase”).
  6. W tym samouczku nie potrzebujesz Google Analytics, więc wyłącz opcję Google Analytics.
  7. Kliknij Utwórz projekt, poczekaj, aż projekt zostanie udostępniony, a następnie kliknij Dalej.

Gratulacje! Właśnie utworzono projekt Firebase.

3. Konfiguracja aplikacji Firebase na poszczególnych platformach

Większość zmian w kodzie wymaganych do włączenia obsługi Firebase jest już wprowadzona w projekcie, nad którym pracujesz. Aby jednak dodać obsługę platform mobilnych, musisz:

  • Zarejestruj wybraną platformę w projekcie Firebase.
  • Pobierz plik konfiguracji dla danej platformy i dodaj go do kodu.

Na potrzeby tego kursu dodamy aplikację Firebase na Androida.

84e0b3199bef6d8a.pngKonfigurowanie Androida

  1. W konsoli Firebase kliknij Ustawienia projektu u góry paska nawigacyjnego po lewej stronie (ikona koła zębatego) i na stronie Ogólne w sekcji Twoje aplikacje kliknij ikonę Androida.

Powinno się wyświetlić to okno : 8254fc299e82f528.png

  1. Ważną wartością, którą należy podać, jest nazwa pakietu na Androida. Ustaw wartość com.ticker.stocknews.
    1. Nazwa pakietu podana w tym miejscu musi być taka sama jak nazwa podana w AndroidManifest.xml w kodzie początkowym StockNewsApp. Jeśli chcesz ją znaleźć lub zmienić, wykonaj te czynności:
      1. W katalogu StockNewsApp otwórz plik app/src/main/AndroidManifest.xml.
      2. W elemencie manifest znajdź wartość ciągu tekstowego atrybutu package. Jest to nazwa pakietu na Androida.
  1. W oknie Firebase wklej skopiowaną nazwę pakietu w polu Nazwa pakietu Androida.
  2. W tym ćwiczeniu nie potrzebujesz skrótu SHA-1 certyfikatu podpisywania debugowania, ponieważ ta aplikacja nie zostanie opublikowana. Pozostaw to pole puste.
  3. Kliknij Zarejestruj aplikację.
  4. W konsoli Firebase wykonaj instrukcje, aby pobrać plik konfiguracyjny google-services.json.
  5. Możesz pominąć pozostałe kroki konfiguracji, ponieważ wszystko inne jest już skonfigurowane w kodzie aplikacji startowej. Aplikacja będzie widoczna na stronie głównej konsoli Firebase.
  6. Skopiuj plik google-services.json (pobrany przed chwilą) do katalogu messaging/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 Androida Studio i zaimportuj messaging/fcm-topics-codelab/starter/StockNewsApp z katalogu kodu początkowego.

Po wczytaniu projektu może się też pojawić alert z informacją, że Git nie śledzi wszystkich lokalnych zmian. Możesz kliknąć „Zignoruj” lub „X” w prawym górnym rogu. (Nie będziesz przesyłać żadnych zmian z powrotem do repozytorium Git).

W lewym górnym rogu okna projektu powinna być widoczna zawartość podobna do tej na obrazie poniżej, jeśli jesteś w widoku Android. (Jeśli jesteś w widoku Projekt, musisz rozwinąć projekt, aby zobaczyć to samo).

b574ea0089ee87c6.png

Pamiętaj, że kompilacja projektu w tle może zająć Androidowi Studio kilka sekund. W tym czasie na pasku stanu u dołu Android Studio zobaczysz spinner:

4bc64eb3b99eb0ae.png

Zalecamy, aby przed wprowadzeniem zmian w kodzie poczekać na zakończenie tego procesu. Dzięki temu Android Studio pobierze wszystkie niezbędne komponenty.

Jeśli pojawi się komunikat „Czy chcesz ponownie załadować stronę, aby zastosować zmiany języka?” lub podobny, kliknij „Tak”.

Konfiguracja emulatora

Jeśli potrzebujesz pomocy przy konfigurowaniu emulatora Androida, zapoznaj się z artykułem Uruchamianie aplikacji.

Omówienie kodu początkowego aplikacji na Androida

  • Kod początkowy to lekka aplikacja na Androida o minimalnej funkcjonalności i interfejsie.
  • Zależność od pakietu SDK firebase-messaging jest już dodana do pliku app/build.gradle.

f04ff8f48d186dff.png

  • AndroidManifest.xml dodano już moduł obsługi wywołania zwrotnego MESSAGING_EVENT.
    • Ten moduł obsługi StockNewsMessagingService.java rozszerza klasę FirebaseMessagingService, która udostępnia różne funkcje związane z Komunikacją w chmurze Firebase. Więcej informacji znajdziesz w dokumentacji FirebaseMessagingService. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • Funkcja onNewToken jest wywoływana, gdy token rejestracyjny FCM zostanie utworzony lub odświeżony. Więcej informacji znajdziesz w sekcji Monitorowanie generowania tokenów.
    • Funkcja onMessageReceived jest wywoływana, gdy nadejdzie wiadomość, a aplikacja działa na pierwszym planie. Obecnie po prostu rejestruje otrzymaną wiadomość.
  • AndroidManifest.xml dostępna jest też klasa Application Androida o nazwie StockNewsApplication. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Ta klasa zostanie utworzona jako pierwsza po uruchomieniu aplikacji.
    • W funkcji onCreate klasy StockNewsApplication dodano wywołanie tworzenia tokena rejestracji FCM. Wygeneruje on prawidłowy token rejestracji FCM i zapisze go w logu.
  • Symbol MainActivity.java dodaje symbol RecyclerView, który wyświetla wybór kategorii produktów.
  • SubscriptionAdapter.java implementuje RecyclerView.Adapter, który rysuje ekran wyboru kategorii produktów.
    • Każda kategoria zasobów ma nazwę i przełącznik subskrypcji.
    • Przełączenie powinno spowodować wywołanie subskrypcji lub anulowania subskrypcji tematu FCM.
    • W kolejnych sekcjach zaimplementujesz te wywołania.
  • Klasa model/StockCategories.java zawiera listę wszystkich kategorii akcji i powiązanych z nimi nazw tematów.

b32663ec4e865a18.png

Uruchom aplikację startową

  1. Podłącz urządzenie z Androidem do komputera lub uruchom emulator.
  2. Na pasku narzędzi u góry wybierz docelowe urządzenie z Androidem lub emulator i kliknij przycisk uruchamiania.

5b27fc5b237e06b9.png

  1. Interfejs aplikacji będzie wyglądał tak:

ff5b1a1c53231c54.png

  1. Aplikacja utworzy token rejestracji FCM i zarejestruje go. Jednak w interfejsie aplikacji nic się nie zmieni.
    1. Skopiuj i zapisz token rejestracji FCM, ponieważ będzie on używany w następnych krokach.

927eb66bc909f36b.png

5. Wysyłanie wiadomości testowej

Możesz teraz 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 pasku nawigacyjnym po lewej stronie powinien wyglądać mniej więcej tak:

da20711f6527dff6.png

Pamiętaj, że skompilowanie projektu w IntelliJ IDEA, w tym pobranie wymaganych zależności, może potrwać kilka minut.

Informacje o początkowym kodzie serwera

  • Kod początkowy serwera to projekt Java oparty na Gradle.
  • Plik build.gradle ma już dodaną zależność od pakietu SDK firebase-admin. Ten pakiet SDK zapewnia dostęp do różnych funkcji wysyłania wiadomości FCM.

650fc733298588f8.png

  • Wyróżniamy 2 klasy:
    • FcmSender.java: ta klasa zawiera te metody:
      • initFirebaseSDK: inicjuje pakiet SDK firebase-admin.
      • sendMessageToFcmRegistrationToken: wysyłanie wiadomości do tokena rejestracji FCM.
      • sendMessageToFcmTopic: wysyłanie wiadomości do tematu FCM.
      • sendMessageToFcmTopicCondition: wysyłanie wiadomości 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: subskrybuj tokeny rejestracyjne FCM w temacie FCM.
      • unsubscribeFcmRegistrationTokensFromTopic: anulowanie subskrypcji tokenów rejestracji FCM w temacie FCM.

Konfigurowanie kodu serwera

  1. Najpierw musimy skonfigurować konto usługi Firebase, które umożliwi pakietowi SDK firebase-admin autoryzowanie wywołań interfejsów FCM API.
    1. Otwórz konsolę Firebase, w menu nawigacyjnym po lewej stronie kliknij ikonę koła zębatego obok opcji Przegląd projektu i wybierz Ustawienia projektu. 8c2108d4d7c915e9.png
    2. Na stronie ustawień wybierz Konta usługi i kliknij Utwórz konto usługi. 84b128cc5dac0a85.png
    3. Teraz kliknij przycisk Generate new private key (Wygeneruj nowy klucz prywatny). Rozpocznie się automatyczne pobieranie pliku klucza.
    4. Zmień nazwę pliku klucza na service-account.json i skopiuj go do folderu messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources.
    5. Zarówno FcmSender.java, jak i FcmSubscriptionManager.java wczytują plik service-account.json ze ścieżki klasy za pomocą tego kodu: 8dffbee658e0bdd.png
  2. Na tym etapie kod serwera jest gotowy. Na pasku menu u góry kliknij Uruchom kompilację –> Skompiluj projekt.

Wysyłanie wiadomości testowej

  1. FcmSender.java znajdź funkcję sendMessageToFcmRegistrationToken i wstaw token rejestracji FCM skopiowany z sekcji Uruchom aplikację startową do pola registrationToken.
  2. W funkcji main odkomentuj tylko funkcję sendMessageToFcmRegistrationToken i kliknij „Uruchom”, aby wykonać kod.
    1. Zwróć uwagę, jak token rejestracji FCM jest ustawiany w polu Token obiektu message.
    2. Zwróć też uwagę, jak użyliśmy interfejsu API send interfejsu FirebaseMessaging.

52e4a3ec3f816473.png

  1. Powinno to spowodować wysłanie wiadomości do instancji aplikacji skonfigurowanej w poprzednim kroku.
  2. Gdy instancja aplikacji jest na pierwszym planie, treść wiadomości powinna być rejestrowana.

d3540ec1089f97dd.png

  1. Gdy instancja aplikacji działa w tle, komunikat pojawi się w obszarze powiadomień.

31203deca59c03fe.png

Świetnie, udało Ci się wysłać wiadomości do instancji aplikacji za pomocą pakietu Firebase Admin SDK. Dowiedz się więcej o używaniu pakietu Firebase Admin SDK na serwerze.

6. Wdrażanie subskrypcji i anulowania subskrypcji tematu

W tym kroku zaimplementujesz działania związane z subskrybowaniem i anulowaniem subskrypcji tematu w przypadku przełącznika kategorii akcji w aplikacji na Androida.

Gdy użytkownik aplikacji przełączy przełącznik dla określonej kategorii akcji, zostanie wykonane wywołanie subskrypcji lub anulowania subskrypcji tematu.

Sprawdź kod

  • W kodzie aplikacji na Androida przejdź do klasy SubscriptionAdapter.java i znajdź klasę RecyclerViewViewHolder.

6c0614199e684f6.png

  • Konstruktor klasy konfiguruje odbiornik przełącznika subskrypcji za pomocą funkcji setOnCheckedChangeListener.
  • W zależności od stanu przełącznika subskrypcję i anulowanie subskrypcji wykonuje się odpowiednio za pomocą metod subscribeToStockCategoryunsubscribeFromStockCategory.
  • Metoda setData jest wywoływana przez metodę onBindViewHolder adaptera RecyclerView, aby powiązać element ViewHolder z odpowiednią kategorią akcji.

Wdrażanie subskrypcji tematów

  1. W metodzie subscribeToStockCategory zaimplementujesz wywołanie interfejsu API subscribeToTopic obiektu FirebaseMessaging. Kod może wyglądać mniej więcej 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();
          });
    }

Wdrożenie anulowania subskrypcji tematu

  1. Podobnie w warunku else zaimplementujesz wywołanie interfejsu API unsubscribeFromTopic. Coś w tym stylu:
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

  1. Uruchom aplikację i przełącz opcje kategorii akcji, aby wykonać działania Subskrybuj i Anuluj subskrypcję. Będzie on wyglądać mniej więcej tak:

Subskrybuj

Anuluj subskrypcję

7. Wysyłanie pierwszej wiadomości w temacie

W tym kroku zaimplementujesz kod po stronie serwera, aby wysłać wiadomość do tematu FCM.

Wdrażanie integracji po stronie serwera na potrzeby wysyłania wiadomości do tematu

  1. W kodzie serwera przejdź do FcmSender.java i znajdź metodę o nazwie sendMessageToFcmTopic.

56381dd1b40cde9c.png

  1. W pierwszym wierszu podaj temat FCM, na który chcesz wysłać wiadomość.
    • Jest to ciąg znaków w formacie /topics/<Topic Name>. Na przykład: /topics/Technology.
  2. W kolejnych wierszach utwórz nowy obiekt message (podobny do tego zdefiniowanego w funkcji sendMessageToFcmRegistrationToken).
    • Różnica polega na tym, że zamiast ustawiać pole Token obiektu message, ustawisz pole Topic.
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. Teraz dodaj wywołanie instancji FirebaseMessaging, aby wysłać wiadomość (tak samo jak w przypadku wywołania wysyłania w funkcji sendMessageToFcmRegistrationToken).
FirebaseMessaging.getInstance().send(message);
  1. Na koniec zmodyfikuj funkcję main i włącz wywoływanie tylko funkcji sendMessageToFcmTopic.

9a6aa08dd7c28898.png

Wysyłanie wiadomości i potwierdzanie jej odbioru

  1. Zanim wyślesz wiadomość do tematu, upewnij się, że instancja aplikacji jest subskrybowana w temacie, do którego chcesz wysłać wiadomość.
    1. Można to zrobić, przełączając odpowiedni przełącznik. Przykład:
    4668247408377712.png
  2. Możesz teraz wysłać wiadomość dotyczącą tematu, wykonując funkcję mainFcmSender.java.
  3. Podobnie jak wcześniej, powinna być widoczna informacja o otrzymaniu wiadomości w instancji aplikacji.
    1. Instancja aplikacji na pierwszym planie
    c144721399f610fe.png
    1. Instancja aplikacji w tle
    44efc7dfd57e8e9a.png
  4. Bonus: spróbuj zrezygnować z subskrypcji tematu, do którego wysłano wiadomość, i ponownie ją wyślij. Zauważysz, że wiadomość nie jest dostarczana do instancji aplikacji.

8. Wysyłanie pierwszej wiadomości z warunkiem tematu

Funkcja warunku tematu umożliwia wysyłanie wiadomości do kombinacji tematów, co pozwala na bardziej wyraziste definiowanie odbiorców.

Na przykład w naszej aplikacji StockNews możesz wysyłać wiadomości do grupy instancji aplikacji, które subskrybują tematy „Technologia” lub „Motoryzacja”. Może się tak zdarzyć na przykład w przypadku ważnego wydarzenia z udziałem Waymo.

Tematy umożliwiają wyrażenie kombinacji w postaci wyrażenia logicznego za pomocą tych operatorów:

  • && : logiczne I. Na przykład 'Technology' in topics && 'Automotive' in topics – kieruje reklamy tylko na instancje aplikacji, które subskrybują zarówno tematy związane z technologią, jak i z motoryzacją.
  • || : operator logiczny LUB. Przykład: 'Technology' in topics || 'Automotive' in topics – kieruje reklamy na instancje aplikacji, które subskrybują tematy związane z technologią lub motoryzacją.
  • () : nawiasy do grupowania; Na przykład 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) – kieruje reklamy tylko na instancje aplikacji, które subskrybują tematy związane z technologią oraz motoryzacją lub energią.

Dowiedz się więcej o tworzeniu próśb o wysłanie w celu korzystania z tej funkcji.

Wdrażanie integracji po stronie serwera w celu wysyłania wiadomości o warunkach tematu

  1. Wróć do kodu serwera, przejdź do FcmSender.java i znajdź metodę o nazwie sendMessageToFcmTopicCondition.

3719a86c274522cf.png

  1. W pierwszym wierszu w przypadku zmiennej topicCondition podaj warunek tematu, do którego chcesz wysłać wiadomość. Możesz ustawić: 'Technology' in topics && 'Automotive' in topics.
  2. W kolejnych wierszach utwórz nowy obiekt message (podobny do tego zdefiniowanego w funkcji sendMessageToFcmTopic).
    1. Różnica polega na tym, że zamiast ustawiać pole Topic obiektu, ustawiasz pole Condition.
    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. Teraz dodaj wywołanie instancji FirebaseMessaging, aby wysłać wiadomość (tak samo jak w przypadku wywołania wysyłania w funkcji sendMessageToFcmTopic).
FirebaseMessaging.getInstance().send(message);
  1. Na koniec zmodyfikuj funkcję main i włącz wywoływanie tylko funkcji sendMessageToFcmTopicCondition.

db9588d40d2a0da6.png

Wysyłanie wiadomości i potwierdzanie jej odbioru

  1. Zanim wyślesz wiadomość do tematu, upewnij się, że instancja aplikacji spełnia określony warunek tematu, subskrybując instancję aplikacji w tematach „Technologia” i „Motoryzacja”.
  2. Możesz teraz wysłać wiadomość dotyczącą tematu, wykonując funkcję mainFcmSender.java.
  3. Podobnie jak wcześniej, powinna być widoczna informacja o otrzymaniu wiadomości w instancji aplikacji.
    1. Instancja aplikacji na pierwszym planie
    6f612ace15aa6515.png
    1. Instancja aplikacji w tle
    78044a56ac2359cb.png
  4. Dodatkowo możesz teraz zrezygnować z subskrypcji tematu Technologia i ponownie wysłać wiadomość z warunkiem tematu. Zauważysz, że instancja aplikacji nie otrzymała wiadomości.

9. Skrót

Podsumujmy krótko zdobytą przez Ciebie wiedzę.

  • Jak rozpocząć lub anulować subskrypcję tematu w instancji aplikacji.
  • Wysyłanie wiadomości do tematu i weryfikowanie jej odbioru w subskrybowanych instancjach aplikacji.
  • Wysyłanie wiadomości do tematu i weryfikowanie jej odbioru w instancji aplikacji, która spełnia warunek.

W następnej sekcji dowiesz się, jak subskrybować i anulować subskrypcję instancji aplikacji w tematach bez konieczności tworzenia instancji wywołań po stronie klienta.

c0dc20655d392690.gif

10. Zarządzanie subskrypcjami tematów po stronie serwera

Do tej pory w tym laboratorium wszystkie wywołania subskrypcji i anulowania subskrypcji tematów były inicjowane z instancji aplikacji.

W niektórych przypadkach możesz jednak chcieć zarządzać subskrypcjami tematów po stronie serwera. Możesz na przykład zasubskrybować podgrupę obecnych użytkowników na nowy temat bez czekania na wdrożenie aplikacji.

Z tej sekcji dowiesz się, jak używać pakietu Firebase Admin SDK do subskrybowania i anulowania subskrypcji partii tokenów rejestracji FCM w temacie przez wywoływanie funkcji po stronie serwera.

Implement server side subscription of FCM Registration Tokens to FCM topic

  1. W kodzie serwera przejdź do FcmSubscriptionManager.java class. Znajdź metodę o nazwie subscribeFcmRegistrationTokensToTopic. Tutaj zaimplementujesz wywołanie interfejsu API subscribeToTopic.

5d5709e7b3cbcb04.png

  1. Zasubskrybujmy instancję aplikacji w temacie Energy. Aby to zrobić, najpierw podaj dane w tych 2 polach:
    1. registrationTokens: rozdzielona przecinkami lista ciągów znaków reprezentujących tokeny rejestracji FCM, dla których chcesz utworzyć subskrypcje tematów.
    2. topicName: nazwa tematu „Energia”, czyli /topics/Energy.
  2. W kolejnych wierszach zaimplementuj wywołanie w ten sposób:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. W sekcji TopicManagementResponse znajdziesz ogólne statystyki wyników. Możesz na przykład wydrukować liczbę utworzonych subskrypcji tematów za pomocą polecenia getSuccessCount.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Na koniec w funkcji main włącz wywoływanie tylko funkcji subscribeFcmRegistrationTokensToTopic.

Tworzenie subskrypcji i wysyłanie wiadomości do tematu

  1. Możesz teraz utworzyć subskrypcję tematu i wysłać do niego wiadomość.
  2. Wykonaj funkcję main klasy FcmSubscriptionManager.java. Spowoduje to utworzenie subskrypcji tematu.
  3. Teraz skonfiguruj kod, aby wysłać wiadomość. Podobnie jak wcześniej,
    1. W pliku FcmSender.java znajdź funkcję sendMessageToFcmTopic.
    2. Ustaw topicName na temat Energia, czyli /topics/Energy
    3. Utwórz obiekt Message i skieruj go na temat za pomocą setTopic.
    4. Na koniec zaktualizuj metodę main, aby włączała tylko funkcję sendMessageToFcmTopic.
  4. Wykonaj funkcję main elementu FcmSender.java. Wiadomość zostanie wysłana do instancji aplikacji.Możesz ją zobaczyć w aplikacji w ten sposób:
    1. Instancja aplikacji na pierwszym planie
    40ab6cf71e0e4116.png
    1. Instancja aplikacji w tle
    8fba81037198209e.png

Implement server side unsubscription of FCM Registration Tokens to FCM topic

  1. Aby anulować subskrypcję tematów po stronie serwera, użyj tego interfejsu API: unsubscribeFromTopic. Odpowiedni kod dodasz do funkcji unsubscribeFcmRegistrationTokensFromTopic klasy FcmSubscriptionManager.java.

8d9e8ea9d34016bd.png

  1. Wdrożenie kodu rezygnacji po stronie serwera i sprawdzenie jego działania przez wysłanie wiadomości do tematu pozostawiamy Tobie.

11. Gratulacje

Gratulacje! Udało Ci się użyć tematów FCM do wysyłania wiadomości do wielu odbiorców w podgrupach instancji aplikacji. Ułatwi Ci to docieranie do użytkowników z odpowiednimi treściami w odpowiednim czasie.

947def3eb33b1e4a.gif

Co dalej?

Po ukończeniu tego laboratorium możesz wypróbować tematy dotyczące innych platform, korzystając z tych przewodników:

Dokumentacja