Twoja pierwsza wiadomość push multicast z wykorzystaniem tematów FCM

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

1. Wstęp

Cele

W tym ćwiczeniu z programowania dowiesz się, jak instrumentować aplikację wieloplatformową, aby można było multiemisji wiadomości push do różnych podgrup instancji aplikacji przy użyciu tematów FCM.

Po zakończeniu będziesz mógł wykorzystać infrastrukturę FCM do zarządzania tymi podgrupami, a także do multiemisji wiadomości push w podgrupach.

Przegląd 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 komunikatów, a także utrzymywania subskrypcji tych tematów. Czynność kojarzenia i kojarzenia instancji aplikacji z tematem nazywa się odpowiednio subskrybowaniem i anulowaniem subskrypcji

Tematy powinny być wykorzystywane do treści dostępnych publicznie. Na przykład wiadomości o aktualizacjach pogody. Jeśli chcesz wysyłać wiadomości poufne, użyj pakietu Firebase Admin SDK do multiemisji wiadomości na wiele urządzeń .

Multiemisja oparta na tematach jest zoptymalizowana pod kątem przepustowości.

Czego się nauczysz

  • Jak zasubskrybować (i wypisać) użytkowników z tematów z aplikacji mobilnej.
  • Jak wysyłać wiadomości push multicast za pomocą tematów.
  • Jak wysyłać wiadomości do kombinacji tematów przy użyciu warunków tematu.
  • Jak zarządzać subskrypcjami tematów po stronie serwera oraz wykonywać subskrypcje zbiorcze i anulować subskrypcje.

Co zbudujesz

  • Aplikacja na Androida, która subskrybuje/anuluje subskrypcję tematów i odbiera wiadomości po wysłaniu do tematów.
  • Integracja po stronie serwera przy użyciu pakietu Firebase Admin SDK, który będzie używany do wysyłania wiadomości na temat tematów za pośrednictwem interfejsów API FCM.

Co będziesz potrzebował

  • Wybrana przeglądarka, taka jak Chrome.
  • IntelliJ IDEA IDE do tworzenia aplikacji Java.
    • Pamiętaj, aby włączyć obsługę Gradle podczas instalacji.
  • Android Studio IDE do tworzenia aplikacji na Androida.
  • Urządzenie do uruchamiania aplikacji na Androida. Albo z:
    • 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 startowa dla tego ćwiczenia z programowania znajduje się w katalogu messaging gałęzi fcm-topics-codelab . Wykonaj następujące kroki, aby uzyskać kod startowy. Zawiera dwa katalogi StockNewsApp i StockNewsServer . Pierwszy zawiera startową aplikację na Androida, a drugi kod po stronie serwera startowego.

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

Ukończona wersja tego ćwiczenia z programowania jest umieszczana w katalogu messaging/fcm-topics-codelab/completed .

Utwórz projekt Firebase

  1. W konsoli Firebase kliknij Dodaj projekt , nazwij projekt Firebase StockNews i kliknij Kontynuuj. Uwaga: zapamiętaj identyfikator projektu Firebase (lub kliknij ikonę Edytuj , aby ustawić preferowany identyfikator projektu).

fc08f9a7808e4553.png

  1. Możesz pominąć włączanie Google Analytics. Na potrzeby tego ćwiczenia z programowania nie jest to potrzebne. Kliknij Kontynuuj.
  2. Kliknij Utwórz projekt .

Gratulacje! Właśnie utworzyłeś projekt Firebase. Teraz możesz kliknąć nazwę projektu, aby wejść do konsoli.

3. Konfiguracja aplikacji Firebase dla konkretnej platformy

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

  • Zarejestruj żądaną platformę w projekcie Firebase
  • Pobierz plik konfiguracyjny specyficzny dla platformy i dodaj go do kodu.

Na potrzeby tego ćwiczenia z programowania dodamy aplikację Android Firebase.

84e0b3199bef6d8a.png Skonfiguruj Androida

  1. W Konsoli Firebase wybierz Ustawienia projektu u góry lewego paska nawigacyjnego w zębatce Ustawienia i kliknij ikonę Androida w sekcji Twoje aplikacje na stronie Ogólne .

Powinieneś zobaczyć następujące okno dialogowe: 8254fc299e82f528.png

  1. Ważną wartością do podania jest nazwa pakietu Android . Ustaw go na com.ticker.stocknews .
    1. Podana tutaj nazwa pakietu musi być taka sama, jak ta podana w AndroidManifest.xml kodu startowego StockNewsApp . Jeśli chcesz go zlokalizować lub zmienić, wykonaj następujące kroki:
      1. W katalogu StockNewsApp otwórz plik app/src/main/AndroidManifest.xml .
      2. W elemencie manifest znajdź wartość ciągu atrybutu package . Ta wartość to nazwa pakietu Androida.
  1. W oknie dialogowym Firebase wklej skopiowaną nazwę pakietu w polu nazwy pakietu Androida .
  2. Nie potrzebujesz certyfikatu debugowania SHA-1 do tego ćwiczenia z programowania, ponieważ ta aplikacja nie zostanie wydana. Zostaw to puste.
  3. Kliknij Zarejestruj aplikację .
  4. Kontynuując pracę w konsoli Firebase, postępuj zgodnie z instrukcjami, 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. Swoją aplikację znajdziesz na głównej stronie Konsoli Firebase.
  6. Skopiuj plik google-services.json (pobrany właśnie) do katalogu messaging/fcm-topics-codelab/starter/StockNewsApp/app .

4. Zbuduj i uruchom swoją aplikację

Jesteś gotowy do rozpoczęcia pracy nad swoją aplikacją! Najpierw skompiluj i uruchom aplikację.

Zaimportuj aplikację startową

Uruchom Android Studio i zaimportujmessaging messaging/fcm-topics-codelab/starter/StockNewsApp z katalogu kodu startowego.

Po załadowaniu projektu możesz również zobaczyć ostrzeżenie, że Git nie śledzi wszystkich lokalnych zmian, możesz kliknąć " Ignoruj ​​" lub " X " w prawym górnym rogu . (Nie będziesz wypychał żadnych zmian z powrotem do repozytorium Git.)

W lewym górnym rogu okna projektu powinieneś zobaczyć coś podobnego do poniższego obrazu, jeśli jesteś w widoku Androida . (Jeśli jesteś w widoku Projekt , będziesz musiał rozwinąć projekt, aby zobaczyć to samo)

b574ea0089ee87c6.png

Pamiętaj, że kompilacja projektu w tle po raz pierwszy może zająć Android Studio kilka sekund. W tym czasie na pasku stanu na dole Android Studio zobaczysz pokrętło:

4bc64eb3b99eb0ae.png

Przed wprowadzeniem zmian w kodzie zalecamy poczekać, aż to się zakończy. Umożliwi to Android Studio pobranie wszystkich niezbędnych komponentów.

Ponadto, jeśli pojawi się monit „Załaduj ponownie, aby zmiany języka zaczęły obowiązywać?” lub coś podobnego, wybierz "Tak".

Konfiguracja emulatora

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

Zrozum kod startowy aplikacji na Androida

  • Kod startowy to lekka aplikacja na Androida o minimalnej funkcjonalności i interfejsie użytkownika.
  • Zależność od pakietu Firebase-Messaging SDK jest już dodana do pliku app/build.gradle .

f04ff8f48d186dff.png

  • W pliku AndroidManifest.xml dodano już procedurę obsługi wywołania zwrotnego MESSAGING_EVENT .
    • Ta procedura obsługi, StockNewsMessagingService.java , rozszerza klasę FirebaseMessagingService , która udostępnia różne funkcje związane z Firebase Cloud Messaging. Więcej informacji znajdziesz w dokumentacji usługi FirebaseMessagingService . b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • Funkcja onNewToken jest wywoływana podczas tworzenia lub odświeżania tokenu rejestracji FCM. Zobacz Monitorowanie generowania tokenów , aby uzyskać więcej informacji.
    • Funkcja onMessageReceived jest wywoływana po odebraniu wiadomości i aplikacji na pierwszym planie. Obecnie po prostu rejestruje otrzymaną wiadomość.
  • Ponadto w AndroidManifest.xml podano również klasę Android Application o nazwie StockNewsApplication . a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Ta klasa będzie pierwszą, która zostanie utworzona podczas uruchamiania aplikacji.
    • W StockNewsApplication klasy onCreate dodano wywołanie tworzenia tokena rejestracji FCM. Wygeneruje ważny token rejestracji FCM i zarejestruje go.
  • MainActivity.java dodaje RecyclerView , który wyświetla opcje kategorii zapasów.
  • SubscriptionAdapter.java implementuje RecyclerView.Adapter , który rysuje ekran wyboru Stock Category.
    • Każda kategoria giełdowa ma nazwę i obok niej przełącznik subskrypcji.
    • Zmiana przełącznika powinna spowodować wywołanie subskrypcji/anulowania subskrypcji tematu FCM.
    • Wezwania te zostaną wdrożone w kolejnych sekcjach.
  • 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 górnym pasku narzędzi wybierz docelowe urządzenie z Androidem lub emulator i naciśnij przycisk uruchamiania.

5b27fc5b237e06b9.png

  1. Interfejs aplikacji będzie wyglądał następująco:

ff5b1a1c53231c54.png

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

927eb66bc909f36b.png

5. Wyślij wiadomość testową

Teraz możesz wysłać wiadomość testową do instancji aplikacji, którą skonfigurowałeś w ostatnim kroku.

Zaimportuj kod 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:

da20711f6527dff6.png

Uwaga: skompilowanie projektu przez IntellIj IDEA może potrwać kilka minut, w tym ściągnięcie wymaganych zależności.

Zrozum kod startowy serwera

  • Kod startowy serwera jest projektem Java opartym na Gradle.
  • Plik build.gradle ma już zależność od dodanego do niego pakietu Firebase-Admin SDK . Ten zestaw SDK zapewnia dostęp do różnych funkcji wysyłania komunikatów FCM.

650fc733298588f8.png

  • Wreszcie istnieją dwie klasy, a mianowicie:
    • FcmSender.java : Ta klasa zawiera następujące metody notatek:
      • initFirebaseSDK : inicjuje pakiet Firebase-Admin SDK.
      • sendMessageToFcmRegistrationToken : wyślij wiadomość do tokena rejestracji FCM.
      • sendMessageToFcmTopic : wysyła wiadomość do tematu FCM.
      • sendMessageToFcmTopicCondition : wysyła wiadomość do warunku tematu FCM.
    • FcmSubscriptionManager.java : ta klasa zawiera metody umożliwiające zarządzanie subskrypcjami tematów po stronie serwera.
      • initFirebaseSDK : inicjuje pakiet Firebase-Admin SDK.
      • subscribeFcmRegistrationTokensToTopic : subskrybuj token(y) rejestracji FCM do tematu FCM.
      • unsubscribeFcmRegistrationTokensFromTopic : anulowanie subskrypcji tokenów rejestracji FCM z tematu FCM.

Konfigurowanie kodu serwera

  1. Najpierw musimy skonfigurować konto usługi Firebase, które umożliwi pakietowi SDK administratora Firebase autoryzację wywołań interfejsów API FCM.
    1. Przejdź do konsoli Firebase, kliknij ikonę koła zębatego obok Przegląd projektu na lewym pasku nawigacyjnym i wybierz Ustawienia projektu . 8c2108d4d7c915e9.png
    2. Na stronie ustawień wybierz Konta usług i kliknij Utwórz konto usługi . 84b128cc5dac0a85.png
    3. Teraz kliknij przycisk Wygeneruj nowy klucz prywatny i 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 ładują plik service-account.json ze ścieżki klasy przy użyciu następującego kodu. 8dffbee658e0bdd.png
  2. W tym momencie kod serwera jest gotowy. Uruchom Build -> Build Project z górnego paska menu.

Wysyłanie wiadomości testowej

  1. W FcmSender.java zlokalizuj funkcję sendMessageToFcmRegistrationToken i wstaw token rejestracji FCM skopiowany z sekcji Uruchom aplikację startową w polu registrationToken .
  2. W main funkcji odkomentuj tylko funkcję sendMessageToFcmRegistrationToken i kliknij run, aby wykonać kod.
    1. Obserwuj, jak token rejestracji FCM jest ustawiony w polu Token obiektu message .
    2. Ponadto zwróć uwagę, w jaki sposób wykorzystaliśmy send API interfejsu FirebaseMessaging .

52e4a3ec3f816473.png

  1. Powinno to wysłać komunikat do instancji aplikacji skonfigurowanej w poprzednim kroku.
  2. Gdy wystąpienie aplikacji znajduje się na pierwszym planie, powinna zostać wyświetlona zarejestrowana treść wiadomości.

d3540ec1089f97dd.png

  1. A gdy instancja aplikacji działa w tle, zauważysz, że komunikat pojawia się na pasku powiadomień.

31203deca59c03fe.png

Świetnie, do wysyłania wiadomości do instancji aplikacji użyłeś pakietu Firebase Admin SDK. Dowiedz się więcej o korzystaniu z pakietu Firebase Admin SDK na swoim serwerze .

6. Zaimplementuj subskrypcję tematu / rezygnację z subskrypcji

W tym kroku wdrożysz akcje subskrypcji tematów i anulowania subskrypcji, w przełączniku Kategoria akcji w aplikacji na Androida.

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

Kod recenzji

  • Przejdź do klasy SubscriptionAdapter.java w kodzie aplikacji dla systemu Android i zlokalizuj klasę RecyclerViewViewHolder .

6c0614199e684f6.png

  • Konstruktor klasy konfiguruje odbiornik dla przełącznika subskrypcji przy użyciu setOnCheckedChangeListener .
  • W zależności od przełącznika, akcje subskrypcji i anulowania subskrypcji są wykonywane przez wywołanie odpowiednio metod subscribeToStockCategory i unsubscribeFromStockCategory .
  • Metoda setData jest wywoływana przez onBindViewHolder adaptera RecyclerView w celu powiązania ViewHolder z odpowiednią kategorią zapasów.

Zaimplementuj subskrypcję tematu

  1. W metodzie subscribeToStockCategory zaimplementujesz wywołanie API subscribeToTopic obiektu FirebaseMessaging . Kod mógłby 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();
          });
    }

Zaimplementuj rezygnację z subskrypcji tematu

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

  1. Uruchom aplikację i przełącz opcje kategorii giełdowej, aby wykonać akcje Subskrybuj i Anuluj subskrypcję. Wyglądałoby to mniej więcej tak:

Subskrybuj

Anuluj subskrypcję

7. Wysyłanie pierwszej wiadomości tematu

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

Zaimplementuj integrację po stronie serwera do wysyłania wiadomości tematu

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

56381dd1b40cde9c.png

  1. W pierwszym wierszu podaj temat FCM, do którego chcesz wysłać wiadomość.
    • Jest to ciąg znaków w postaci: /topics/<Topic Name> . Na przykład /topics/Technology .
  2. W kolejnych wierszach utwórz nowy obiekt message (podobny do obiektu zdefiniowanego w funkcji sendMessageToFcmRegistrationToken ).
    • Różnica będzie 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 do instancji FirebaseMessaging , aby wysłać wiadomość (identyczne z wywołaniem send wykonanym w funkcji sendMessageToFcmRegistrationToken ).
FirebaseMessaging.getInstance().send(message);
  1. Na koniec zaktualizuj funkcję main i włącz wywołanie tylko funkcji sendMessageToFcmTopic .

9a6aa08dd7c28898.png

Wyślij wiadomość i potwierdź pokwitowanie

  1. Przed wysłaniem wiadomości tematu najpierw upewnij się, że instancja aplikacji jest subskrybowana do tematu, do którego chcesz wysłać.
    1. Można to zrobić, przewracając odpowiedni przełącznik. Na przykład:
    4668247408377712.png
  2. Możesz teraz wysłać wiadomość na temat, wykonując main funkcję FcmSender.java .
  3. Podobnie jak wcześniej, powinieneś być w stanie obserwować odbiór wiadomości w instancji aplikacji.
    1. Instancja aplikacji na pierwszym planie
    c144721399f610fe.png
    1. Instancja aplikacji w tle
    44efc7dfd57e8e9a.png
  4. Bonus: spróbuj anulować subskrypcję tematu, do którego wysłałeś, i ponownie wyślij wiadomość. Można zauważyć, że wiadomość nie jest dostarczana do wystąpienia aplikacji.

8. Wysyłanie pierwszej wiadomości o stanie tematu

Funkcja warunku tematu umożliwia wysyłanie wiadomości do kombinacji tematów, umożliwiając bardziej wyraziste określenie odbiorców.

Na przykład w naszej aplikacji StockNews rozważ możliwość wysyłania wiadomości do grupy instancji aplikacji, które subskrybują tematy dotyczące technologii lub motoryzacji. Taki przypadek może mieć miejsce na przykład w przypadku ważnego wydarzenia z udziałem Waymo.

Tematy pozwalają wyrazić kombinację w postaci wyrażenia logicznego za pomocą następujących operatorów

  • && : logiczne AND. Na przykład 'Technology' in topics && 'Automotive' in topics — dotyczy tylko wystąpień aplikacji, które są subskrybowane zarówno w kategorii Technologia, jak i Motoryzacja.
  • || : logiczne LUB. Na przykład 'Technology' in topics || 'Automotive' in topics – dotyczy wystąpień aplikacji, które są subskrybowane w tematach Technologia lub Motoryzacja.
  • () : nawiasy do grupowania. Na przykład 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) – dotyczy tylko wystąpień aplikacji, które są subskrybowane w kategorii Technologia oraz tematy Motoryzacja lub Energia.

Przeczytaj więcej o tym, jak tworzyć żądania wysyłania do korzystania z tej funkcji.

Zaimplementuj integrację po stronie serwera do wysyłania wiadomości o stanie tematu

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

3719a86c274522cf.png

  1. W pierwszym wierszu dla zmiennej topicCondition podaj warunek tematu, do którego chcesz wysłać wiadomość. Możesz ustawić go na: 'Technology' in topics && 'Automotive' in topics .
  2. W kolejnych wierszach utwórz nowy obiekt message (podobny do zdefiniowanego w funkcji sendMessageToFcmTopic ).
    1. Różnica będzie polegać na tym, że zamiast ustawiania pola Topic obiektu ustawisz 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 do instancji FirebaseMessaging , aby wysłać wiadomość (identyczne z wywołaniem send wykonanym w funkcji sendMessageToFcmTopic ).
FirebaseMessaging.getInstance().send(message);
  1. Na koniec zaktualizuj funkcję main i włącz wywołanie tylko funkcji sendMessageToFcmTopicCondition .

db9588d40d2a0da6.png

Wyślij wiadomość i potwierdź pokwitowanie

  1. Zanim wyślesz wiadomość dotyczącą tematu, najpierw upewnij się, że instancja aplikacji spełnia określony warunek tematu, subskrybując instancję aplikacji do tematów Technologia i Motoryzacja.
  2. Możesz teraz wysłać wiadomość na temat, wykonując main funkcję FcmSender.java .
  3. Podobnie jak poprzednio, powinieneś być w stanie obserwować odbiór wiadomości w instancji aplikacji.
    1. Instancja aplikacji na pierwszym planie
    6f612ace15aa6515.png
    1. Instancja aplikacji w tle
    78044a56ac2359cb.png
  4. Bonus: Możesz teraz anulować subskrypcję tematu Technologia i ponownie wysłać wiadomość o warunku tematu. Należy zauważyć, że komunikat nie jest odbierany przez wystąpienie aplikacji.

9. Podsumuj

Zróbmy krótkie podsumowanie tego, czego nauczyłeś się do tego momentu.

  • Jak zainicjować subskrypcję tematu / anulowanie subskrypcji z wystąpienia aplikacji.
  • Wysyłanie wiadomości do tematu i weryfikacja odbioru na subskrybowanych instancjach aplikacji.
  • Wysyłanie wiadomości do tematu Warunek i weryfikacja potwierdzenia w wystąpieniu aplikacji, które spełnia warunek.

W następnej sekcji dowiesz się, w jaki sposób możesz subskrybować / anulować subskrypcję wystąpień aplikacji do tematów bez konieczności tworzenia wystąpień wywołań po stronie klienta.

c0dc20655d392690.gif

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

Do tej pory w tym laboratorium programowania wszystkie subskrypcje tematów i wywołania anulowania subskrypcji są inicjowane z wystąpienia aplikacji.

Jednak w niektórych przypadkach możesz chcieć zarządzać subskrypcjami tematów po stronie serwera. Na przykład możesz chcieć zasubskrybować podgrupę istniejącej bazy użytkowników do nowego tematu bez czekania na wdrożenie aplikacji.

W tej sekcji dowiesz się, jak używać pakietu Firebase Admin SDK do subskrybowania i anulowania subskrypcji partii tokenów rejestracji FCM do tematu, wykonując wywołania po stronie serwera.

Implementuj subskrypcję po stronie serwera tokenów rejestracji FCM do tematu FCM

  1. W kodzie serwera przejdź do klasy FcmSubscriptionManager.java . Znajdź metodę o nazwie subscribeFcmRegistrationTokensToTopic . W tym miejscu zaimplementujesz wywołanie API subscribeToTopic .

5d5709e7b3cbcb04.png

  1. Zasubskrybujmy instancję aplikacji do tematu Energia. W tym celu w pierwszej kolejności podaj dane dla dwóch następujących pól:
    1. registrationTokens : rozdzielona przecinkami lista ciągów reprezentujących tokeny rejestracji FCM, dla których chcesz utworzyć subskrypcje tematów.
    2. nazwa topicName : nazwa tematu dla tematu Energia, tj. /topics/Energy .
  2. W następnych kilku wierszach realizujemy wywołanie, wzdłuż tych wierszy:
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Możesz sprawdzić TopicManagementResponse pod kątem niektórych statystyk wyników na wysokim poziomie. Na przykład drukowanie liczby pomyślnie utworzonych subskrypcji tematów za pomocą getSuccessCount .
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Na koniec w funkcji main włącz wywołania tylko funkcji subscribeFcmRegistrationTokensToTopic .

Utwórz subskrypcję i wyślij wiadomość tematu

  1. W tym momencie jesteś gotowy, aby utworzyć subskrypcję tematu i wysłać do niego wiadomość.
  2. Wykonaj main funkcję klasy FcmSubscriptionManager.java . Spowoduje to utworzenie subskrypcji tematu.
  3. Teraz skonfiguruj kod, aby wysłać wiadomość. Podobnie jak wcześniej,
    1. W FcmSender.java zlokalizuj funkcję sendMessageToFcmTopic .
    2. Ustaw topicName na temat Energia, tj. /topics/Energy .
    3. Utwórz obiekt Message i skieruj go na temat za pomocą setTopic .
    4. Na koniec zaktualizuj main metodę, aby włączyć tylko funkcję sendMessageToFcmTopic .
  4. Wykonaj main funkcję FcmSender.java . Spowoduje to wysłanie wiadomości do Twojej instancji aplikacji i możesz ją obserwować w swojej aplikacji w następujący sposób.
    1. Instancja aplikacji na pierwszym planie
    40ab6cf71e0e4116.png
    1. Instancja aplikacji w tle
    8fba81037198209e.png

Zaimplementuj anulowanie subskrypcji tokenów rejestracji FCM po stronie serwera do tematu FCM

  1. W przypadku anulowania subskrypcji tematów po stronie serwera użyj tego interfejsu API unsubscribeFromTopic . Dodamy odpowiedni kod do funkcji unsubscribeFcmRegistrationTokensFromTopic klasy FcmSubscriptionManager.java .

8d9e8ea9d34016bd.png

  1. Wdrażanie kodu wypisu po stronie serwera i sprawdzanie jego efektu poprzez wysłanie wiadomości tematycznej jest dla Ciebie ćwiczeniem.

11. Gratulacje

Gratulacje, że pomyślnie użyłeś tematów FCM do wysyłania wiadomości multiemisji do podgrup instancji aplikacji. Pomoże to uprościć możliwość szybkiego docierania do użytkowników z odpowiednią treścią.

947def3eb33b1e4a.gif

Co dalej?

Teraz, po ukończeniu ćwiczenia z programowania, rozważ wypróbowanie tematów dla innych platform, korzystając z następujących przewodników:

Dokumenty referencyjne