1. Wprowadzenie
Z tego przewodnika dowiesz się, jak za pomocą Fluttera utworzyć aplikację wieloplatformową z Komunikacją w chmurze Firebase (FCM). Napiszesz jedną część implementacji aplikacji, a potem bezproblemowo skompilujesz ją i uruchomisz na 3 platformach: Androidzie, iOS i w internecie. Dowiesz się też, jak zintegrować FCM z Flutterem oraz jak pisać kod do odbierania i wysyłania wiadomości. Na koniec w tym laboratorium kodowym przedstawiamy funkcję bloków specyficznych dla platformy w interfejsie FCM HTTP v1 API, która umożliwia wysyłanie jednej wiadomości o różnym działaniu na różnych platformach.
Wymagania wstępne
Podstawowa znajomość Fluttera.
Czego się nauczysz
- Jak skonfigurować i utworzyć aplikację Flutter.
- Jak dodać zależności FCM.
- Jak wysyłać pojedyncze wiadomości FCM do aplikacji.
- Jak wysyłać do aplikacji wiadomości FCM dotyczące tematów.
Czego potrzebujesz
- Najnowsza stabilna wersja Android Studio skonfigurowana za pomocą wtyczek Dart i Flutter.
Codelab możesz uruchomić na dowolnym z tych urządzeń:
- fizyczne urządzenie z Androidem podłączone do komputera;
- emulator Androida (patrz Uruchamianie aplikacji w emulatorze Androida);
- wybraną przeglądarkę, np. Chrome;
Opcjonalnie, aby przeprowadzić ćwiczenia w środowisku iOS, potrzebujesz urządzenia z iOS, konta Apple Developer i urządzenia z macOS z zainstalowanym Xcode.
2. Konfiguracja Fluttera
Konfigurowanie środowiska programistycznego Fluttera
Jeśli masz już skonfigurowane środowisko programistyczne Flutter, pomiń tę sekcję.
Aby skonfigurować środowisko programistyczne Flutter, wykonaj te czynności:
- Pobierz i zainstaluj Fluttera w swoim systemie operacyjnym: Instalacja | Flutter
- Sprawdź, czy narzędzie Flutter zostało dodane do ścieżki.
- Skonfiguruj edytor dla Fluttera zgodnie z instrukcjami w artykule Konfigurowanie edytora | Flutter. Pamiętaj, aby zainstalować wtyczki Flutter i Dart do edytora. W pozostałej części tego laboratorium będziesz używać Androida Studio.
- W wierszu poleceń uruchom polecenie
flutter doctor, które przeskanuje konfigurację i wyświetli listę brakujących zależności, które należy naprawić. Postępuj zgodnie z instrukcjami, aby naprawić brakujące zależności. Pamiętaj, że niektóre zależności mogą nie być konieczne. Jeśli na przykład nie zamierzasz tworzyć aplikacji na iOS, brak zależności CocoaPods nie będzie problemem.
Tworzenie projektu Flutter
- Uruchom te polecenia, aby utworzyć aplikację Flutter, a następnie przejdź do jej katalogu:
flutter create --org com.flutter.fcm --project-name fcmflutter fcmflutter cd fcmflutter
- W Android Studio kliknij Plik –> Otwórz, znajdź ścieżkę do aplikacji Flutter, a następnie kliknij Otwórz, aby otworzyć projekt w Android Studio. Kod aplikacji znajduje się w pliku
lib/main.dart. - Na pasku narzędzi Android Studio kliknij strzałkę w dół, aby wybrać urządzenie z Androidem. Jeśli selektor docelowy jest pusty, zainstaluj wirtualne urządzenia z Androidem, przeglądarkę Chrome lub symulator iOS, jeśli wolisz uruchamiać aplikację z przeglądarki internetowej lub urządzenia z iOS. Może być konieczne ręczne uruchomienie urządzenia i odświeżenie listy, aby znaleźć urządzenie docelowe.

Aby uruchomić aplikację, kliknij Uruchom
.

Gratulacje! Udało Ci się utworzyć aplikację Flutter.
3. Konfigurowanie Firebase i FlutterFire
Aby opracować aplikację, która integruje się z Komunikacją w chmurze Firebase za pomocą Fluttera, musisz mieć:
- Masz projekt Firebase.
- Działający wiersz poleceń Firebase.
- Zainstalowane FlutterFire.
- Aplikacja skonfigurowana i wygenerowana za pomocą
flutterfire configure.
Utwórz projekt Firebase
Jeśli masz już projekt Firebase, możesz pominąć ten krok.
- Zaloguj się w konsoli Firebase, korzystając ze swojego konta Google.
- Kliknij przycisk, aby utworzyć nowy projekt, a potem wpisz jego nazwę (np.
fcm4flutter).
- Kliknij Dalej.
- Po wyświetleniu monitu zapoznaj się z warunkami usługi Firebase i zaakceptuj je, a potem kliknij Dalej.
- (Opcjonalnie) Włącz w konsoli Firebase pomoc AI (nazywaną „Gemini w Firebase”).
- W tym samouczku nie potrzebujesz Google Analytics, więc wyłącz opcję Google Analytics.
- Kliknij Utwórz projekt, poczekaj, aż projekt zostanie udostępniony, a następnie kliknij Dalej.
Gratulacje! Udało Ci się utworzyć projekt Firebase.
Konfigurowanie wiersza poleceń Firebase
Jeśli masz skonfigurowany wiersz poleceń Firebase, możesz pominąć ten krok.
Aby pobrać i zainstalować wiersz poleceń Firebase, zapoznaj się z informacjami o wierszu poleceń Firebase. Zaloguj się w Firebase za pomocą konta Google, wpisując to polecenie:
firebase login
Konfigurowanie FlutterFire
Otwórz wiersz poleceń w projekcie w Android Studio (Widok –> Okna narzędzi –> Terminal) i uruchom te polecenia, aby skonfigurować FlutterFire:
- Zainstaluj wtyczkę FlutterFire:
flutter pub add firebase_core
- Zainstaluj wtyczkę FCM:
flutter pub add firebase_messaging
- Skonfiguruj interfejs wiersza poleceń FlutterFire:
dart pub global activate flutterfire_cli
- Skonfiguruj projekt Firebase w Flutterze:
Zastąpflutterfire configure --PROJECT_ID
PROJECT_IDidentyfikatorem projektu Firebase utworzonego w pierwszym kroku. Użyj klawiszy strzałek i spacji, aby wybrać platformy, lub naciśnij Enter, aby użyć domyślnych platform.
W tym samouczku używamy domyślnych platform (Android, iOS i internet), ale możesz wybrać tylko 1 lub 2 platformy. Jeśli pojawi się prośba o podanie identyfikatora pakietu na iOS, wpisz com.flutter.fcm.fcmflutter lub własny identyfikator pakietu na iOS w formacie [company domain name].[project name]. Po zakończeniu wykonywania polecenia odśwież stronę konsoli Firebase. Zobaczysz, że w projekcie Firebase utworzono aplikacje na wybrane platformy.

To polecenie generuje plik firebase_options.dart w katalogu lib, który zawiera wszystkie opcje wymagane do inicjowania.
Konfigurowanie Cloud Messaging na iOS
- Otwórz stronę dla deweloperów Apple i na karcie Klucze kliknij Utwórz klucz.

- Wpisz nazwę klucza i zaznacz Usługi Apple Push Notification (APNs).

- Pobierz plik klucza z rozszerzeniem
.p8.
- W konsoli Firebase otwórz Ustawienia projektu i wybierz kartę Cloud Messaging.


- Prześlij plik klucza APNs dla aplikacji na iOS na karcie Cloud Messaging. Wpisz identyfikator klucza APNs z karty Cloud Messaging oraz identyfikator zespołu, który znajdziesz w Apple Member Center.

4. Przygotowanie FCM
Zanim aplikacja będzie mogła otrzymywać wiadomości z FCM:
- Zainicjuj FlutterFire.
- Poproś o zgodę na wyświetlanie powiadomień.
- Zarejestruj się w FCM, aby uzyskać token rejestracji.
Inicjowanie
Aby zainicjować usługę, zastąp funkcję główną (lib/main.dart) tym kodem:
// core Flutter primitives
import 'package:flutter/foundation.dart';
// core FlutterFire dependency
import 'package:firebase_core/firebase_core.dart';
// generated by flutterfire configure
import 'firebase_options.dart';
// FlutterFire's Firebase Cloud Messaging plugin
import 'package:firebase_messaging/firebase_messaging.dart';
// TODO: Add stream controller
// TODO: Define the background message handler
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// TODO: Request permission
// TODO: Register with FCM
// TODO: Set up foreground message handler
// TODO: Set up background message handler
// TODO: Subscribe to a topic
runApp(MyApp());
}
Następnie w Android Studio uruchom Tools -> Flutter -> Flutter Pub Get (Narzędzia –> Flutter –> Flutter Pub Get), aby wczytać pakiety dodane w sekcji Konfigurowanie FlutterFire i wyświetlić kod z odpowiednim ustawieniem Intellisense w Android Studio.
Spowoduje to zainicjowanie FlutterFire na bieżącej platformie DefaultFirebaseOptions.currentPlatform, która jest importowana z wygenerowanego pliku firebase_options.dart. Pamiętaj, że initializeApp to funkcja asynchroniczna, a słowo kluczowe await zapewnia, że inicjowanie zostanie zakończone przed uruchomieniem aplikacji.
Poproś o uprawnienia
Aplikacja musi poprosić użytkownika o zgodę na otrzymywanie powiadomień. Metoda requestPermission udostępniana przez firebase_messaging wyświetla okno lub wyskakujące okienko z prośbą o przyznanie lub odmowę przyznania uprawnień.
Najpierw skopiuj ten kod do funkcji głównej pod komentarzem TODO: Request permission. Zwrócona wartość settings informuje, czy użytkownik przyznał uprawnienia.
final messaging = FirebaseMessaging.instance;
final settings = await messaging.requestPermission(
alert: true,
announcement: false,
badge: true,
carPlay: false,
criticalAlert: false,
provisional: false,
sound: true,
);
if (kDebugMode) {
print('Permission granted: ${settings.authorizationStatus}');
}
Następnie na pasku narzędzi Android Studio wybierz Chrome (web) w selektorze celu i ponownie uruchom aplikację.

Następnie otworzy się karta Chrome z wyskakującym okienkiem z prośbą o uprawnienia. Jeśli klikniesz Allow, w konsoli Android Studio zobaczysz log: Permission granted: AuthorizationStatus.authorized. Po zezwoleniu na prośbę o uprawnienia lub jej zablokowaniu Twoja odpowiedź jest przechowywana w przeglądarce razem z aplikacją, a wyskakujące okienko nie jest już wyświetlane. Pamiętaj, że gdy ponownie uruchomisz aplikację internetową w Android Studio, możesz ponownie zobaczyć prośbę o przyznanie uprawnień.

Rejestracja
Skopiuj ten kod do funkcji głównej pod komentarzem TODO: Register with FCM, aby zarejestrować się w FCM. Wywołanie getToken zwraca token rejestracji, którego serwer aplikacji lub zaufane środowisko serwera może używać do wysyłania wiadomości do użytkowników.
// It requests a registration token for sending messages to users from your App server or other trusted server environment.
String? token = await messaging.getToken();
if (kDebugMode) {
print('Registration Token=$token');
}
Na pasku narzędzi Androida Studio wybierz urządzenie z Androidem i uruchom aplikację. W konsoli Androida Studio token rejestracyjny zostanie wydrukowany w ten sposób:
I/flutter ( 3717): Permission granted: AuthorizationStatus.authorized I/flutter ( 3717): Registration Token=dch. . . D2P:APA9. . .kbb4
Skopiuj go do edytora tekstu, ponieważ będziesz go później używać do wysyłania wiadomości.
uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:firebase_messaging]
Dodatkowe czynności, które musisz wykonać, aby otrzymywać wiadomości w przeglądarce
Aplikacje internetowe wymagają 2 dodatkowych kroków, aby uzyskać token rejestracji i nasłuchiwać przychodzących wiadomości. Aby autoryzować wysyłanie żądań do obsługiwanych usług powiadomień push w internecie, witryna musi przekazać klucz VAPID do getToken.
Najpierw otwórz kartę Komunikacja w chmurze w projekcie Firebase w konsoli Firebase, przewiń w dół do sekcji Konfiguracja internetowa, aby znaleźć istniejącą parę kluczy, lub wygeneruj nową parę kluczy. Kliknij wyróżniony przycisk, aby skopiować klucz, który będzie można użyć jako vapidKey.

Następnie zastąp kod rejestracji w sekcji Registration (Rejestracja) tym kodem i zaktualizuj klucz VAPID:
// TODO: replace with your own VAPID key
const vapidKey = "<YOUR_PUBLIC_VAPID_KEY_HERE>";
// use the registration token to send messages to users from your trusted server environment
String? token;
if (DefaultFirebaseOptions.currentPlatform == DefaultFirebaseOptions.web) {
token = await messaging.getToken(
vapidKey: vapidKey,
);
} else {
token = await messaging.getToken();
}
if (kDebugMode) {
print('Registration Token=$token');
}
Następnie utwórz plik firebase-messaging-sw.js w katalogu web/ w katalogu głównym projektu. Skopiuj poniższy kod do firebase-messaging-sw.js, aby umożliwić aplikacji internetowej odbieranie zdarzeń onMessage. Więcej informacji znajdziesz w artykule Ustawianie opcji powiadomień w skrypcie service worker.
importScripts("https://www.gstatic.com/firebasejs/9.6.10/firebase-app-compat.js");
importScripts("https://www.gstatic.com/firebasejs/9.6.10/firebase-messaging-compat.js");
// todo Copy/paste firebaseConfig from Firebase Console
const firebaseConfig = {
apiKey: "...",
authDomain: "...",
projectId: "...",
storageBucket: "...",
messagingSenderId: "...",
appId: "...",
};
firebase.initializeApp(firebaseConfig);
const messaging = firebase.messaging();
// todo Set up background message handler
Następnie w sekcji Ustawienia projektu –> karta Ogólne przewiń w dół i znajdź Aplikacja internetowa. Skopiuj sekcję kodu firebaseConfig i wklej ją w firebase-messaging-sw.js. 
Na koniec na pasku narzędzi Android Studio wybierz Chrome (web) w selektorze celu i uruchom aplikację. W konsoli Android Studio token rejestracji zostanie wydrukowany w ten sposób:
Debug service listening on ws://127.0.0.1:61538/BLQQ3Fg-h7I=/ws Permission granted: AuthorizationStatus.authorized Registration Token=fH. . .ue:APA91. . .qwt3chpv
Skopiuj token rejestracji do edytora tekstu, aby móc go później używać do wysyłania wiadomości.
Dodatkowe czynności, które należy wykonać, aby otrzymywać wiadomości na urządzeniu z iOS
Aby otrzymywać wiadomości z FCM, na urządzeniach z iOS musisz włączyć w Xcode powiadomienia push i tryby działania w tle:
- W Android Studio kliknij folder
iosw drzewie plików projektu, a następnie wybierz Narzędzia –> Flutter –> Otwórz moduł iOS w Xcode.
- Po uruchomieniu Xcode włącz powiadomienia push i tryby działania w tle na karcie Podpisywanie i możliwości dla docelowego projektu. Więcej informacji znajdziesz w artykule Konfigurowanie aplikacji.
- Na pasku narzędzi Android Studio wybierz urządzenie z iOS w selektorze docelowym i uruchom aplikację. Po przyznaniu uprawnień do wysyłania powiadomień token rejestracyjny zostanie wydrukowany w konsoli Android Studio.

Gratulacje, aplikacja została zarejestrowana w FCM. Możesz już otrzymywać wiadomości zgodnie z opisem w następnej sekcji.
5. Odbieranie wiadomości z FCM
Konfigurowanie modułów obsługi wiadomości
Aplikacja musi obsługiwać zdarzenia onMessage, gdy wiadomości docierają, gdy aplikacja jest na pierwszym planie, oraz zdarzenia onBackgroundMessage, gdy aplikacja działa w tle.
Obsługa wiadomości na pierwszym planie
Najpierw dodaj kontroler strumienia po komentarzu TODO: Add stream controller w pliku main.dart, aby przekazywać wiadomości z obsługi zdarzeń do interfejsu.
import 'package:rxdart/rxdart.dart';
// used to pass messages from event handler to the UI
final _messageStreamController = BehaviorSubject<RemoteMessage>();
Aby dodać zależność rxdart, uruchom to polecenie w katalogu projektu:
flutter pub add rxdart
Następnie w Android Studio kliknij Tools –> Flutter –> Flutter Pub Get, aby załadować pakiet rxdart.dart i wyświetlić kod z odpowiednimi ustawieniami Intellisense w Android Studio.
Następnie dodaj moduł obsługi zdarzeń, aby nasłuchiwać wiadomości na pierwszym planie po komentarzu TODO: Set up foreground message handler. Zapisuje dzienniki i publikuje wiadomość w kontrolerze strumienia.
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
if (kDebugMode) {
print('Handling a foreground message: ${message.messageId}');
print('Message data: ${message.data}');
print('Message notification: ${message.notification?.title}');
print('Message notification: ${message.notification?.body}');
}
_messageStreamController.sink.add(message);
});
Następnie zastąp oryginalny widżet State znajdujący się na końcu pliku main.dart tym kodem, który dodaje subskrybenta do kontrolera strumienia w widżecie State i wyświetla ostatnią wiadomość w widżecie.
class _MyHomePageState extends State<MyHomePage> {
String _lastMessage = "";
_MyHomePageState() {
_messageStreamController.listen((message) {
setState(() {
if (message.notification != null) {
_lastMessage = 'Received a notification message:'
'\nTitle=${message.notification?.title},'
'\nBody=${message.notification?.body},'
'\nData=${message.data}';
} else {
_lastMessage = 'Received a data message: ${message.data}';
}
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Last message from Firebase Messaging:',
style: Theme.of(context).textTheme.titleLarge),
Text(_lastMessage, style: Theme.of(context).textTheme.bodyLarge),
],
),
),
);
}
}
Obsługa wiadomości w tle na Androidzie i iOS
Wiadomości są obsługiwane przez moduł obsługi onBackgroundMessage, gdy aplikacja działa w tle. Funkcja obsługi powinna być funkcją najwyższego poziomu. Interfejs użytkownika można aktualizować, gdy aplikacja jest przenoszona na pierwszy plan, poprzez obsługę wiadomości (patrz Obsługa interakcji) lub synchronizację z serwerem aplikacji.
Utwórz funkcję obsługi po komentarzu TODO: Define the background message handler poza funkcją główną i wywołaj ją w funkcji głównej po komentarzu TODO: Set up background message handler.
// TODO: Define the background message handler
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
if (kDebugMode) {
print("Handling a background message: ${message.messageId}");
print('Message data: ${message.data}');
print('Message notification: ${message.notification?.title}');
print('Message notification: ${message.notification?.body}');
}
}
void main() {
...
// TODO: Set up background message handler
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(MyApp());
}
Obsługa wiadomości w tle w przeglądarce
Od wersji 11.2.8 pakietu FlutterFire firebase_messaging obsługa wiadomości w tle na platformach internetowych wymaga innego procesu. Dlatego w usłudze Service Worker musisz dodać osobny moduł obsługi wiadomości web/firebase-messaging-sw.js.
messaging.onBackgroundMessage((message) => {
console.log("onBackgroundMessage", message);
});
Konfigurowanie serwera aplikacji
- Sklonuj repozytorium kodu serwera
https://github.com/FirebaseExtended/firebase_fcm_flutter/tree/main/serveri otwórz je w Android Studio jako nowy projekt. Serwer to projekt Java oparty na Gradle, który jest zależny od pakietu firebase-admin SDK, który zapewnia funkcję wysyłania wiadomości FCM. - Skonfiguruj konto usługi Firebase, które umożliwi pakietowi Firebase Admin SDK autoryzowanie wywołań interfejsów API FCM. Otwórz Ustawienia projektu w konsoli Firebase i wybierz kartę Konta usługi. Wybierz „Java” i kliknij
Generate new private key, aby pobrać fragment kodu konfiguracji.
- Zmień nazwę pliku na
service-account.jsoni skopiuj go do ścieżkisrc/main/resourcesw projekcie serwera.
Wysyłanie wiadomości testowej
W pliku FcmSender.java usługa sendMessageToFcmRegistrationToken tworzy wiadomość z powiadomieniem i ładunkiem danych. Token rejestracji jest kierowany na instancję aplikacji, do której wysyłana jest wiadomość.
private static void sendMessageToFcmRegistrationToken() throws Exception {
String registrationToken = "REPLACE_WITH_FCM_REGISTRATION_TOKEN";
Message message =
Message.builder()
.putData("FCM", "https://firebase.google.com/docs/cloud-messaging")
.putData("flutter", "https://flutter.dev/")
.setNotification(
Notification.builder()
.setTitle("Try this new app")
.setBody("Learn how FCM works with Flutter")
.build())
.setToken(registrationToken)
.build();
FirebaseMessaging.getInstance().send(message);
System.out.println("Message to FCM Registration Token sent successfully!!");
}
- Skopiuj token rejestracji Androida z sekcji Rejestracja i wklej go jako wartość zmiennej
registrationToken. - Kliknij Uruchom
, aby uruchomić funkcję główną i wysłać wiadomość do użytkownika za pomocą FCM. 
Gdy aplikacja na Androida działa w tle, wiadomość pojawia się w obszarze powiadomień.

Gdy aplikacja na Androida jest na pierwszym planie, w konsoli Android Studio zobaczysz log: „Handling a foreground message” (Obsługa wiadomości na pierwszym planie). Treść wiadomości jest też wyświetlana w interfejsie, ponieważ jest on subskrybowany w kontrolerze strumienia pod kątem nowych wiadomości.

Jeśli wkleisz token rejestracji i wyślesz wiadomość z serwera aplikacji lub innego zaufanego środowiska serwera, zobaczysz podobne zachowanie:
- Gdy aplikacja internetowa działa w tle (np. jest ukryta za innym oknem lub aktywna jest inna karta), zobaczysz powiadomienie internetowe.

- Gdy aplikacja internetowa jest na pierwszym planie, możesz wyświetlić dziennik w konsoli Chrome, klikając prawym przyciskiem myszy stronę internetową i wybierając
Inspect. Treść wiadomości jest też wyświetlana w interfejsie.
6. Wysyłanie wiadomości do tematu
Funkcja zastępowania platformy w interfejsie FCM HTTP v1 API umożliwia wysyłanie żądań wiadomości, które będą się różnie zachowywać na różnych platformach. Jednym z przypadków użycia tej funkcji jest wyświetlanie różnych treści powiadomień w zależności od platformy. Ta funkcja jest w pełni wykorzystywana, gdy kierujesz wiadomości tematyczne na wiele urządzeń (które mogą obejmować różne platformy). W tej sekcji znajdziesz instrukcje, jak skonfigurować aplikację, aby otrzymywała wiadomości dotyczące tematu dostosowane do każdej platformy.
Subskrybowanie tematu z poziomu klienta
Aby zasubskrybować temat, skopiuj ten kod do funkcji głównej pod komentarzem TODO: Subscribe to a topic:
// subscribe to a topic.
const topic = 'app_promotion';
await messaging.subscribeToTopic(topic);
[Opcjonalnie] Subskrybowanie tematu z serwera na potrzeby internetu
Jeśli nie tworzysz aplikacji na platformę internetową, możesz pominąć tę sekcję.
Pakiet FCM JS SDK nie obsługuje obecnie subskrypcji tematów po stronie klienta. Zamiast tego możesz zasubskrybować temat za pomocą interfejsu API do zarządzania tematami po stronie serwera z pakietu Admin SDK. Ten kod w pliku FcmSubscriptionManager.java ilustruje subskrypcję tematu po stronie serwera za pomocą pakietu Java Admin SDK. Przed uruchomieniem dodaj token rejestracji FCM:
private static void subscribeFcmRegistrationTokensToTopic() throws Exception {
List<String> registrationTokens =
Arrays.asList(
"REPLACE_WITH_FCM_REGISTRATION_TOKEN"); // TODO: add FCM Registration Tokens to
// subscribe
String topicName = "app_promotion";
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(registrationTokens, topicName);
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
}
Otwórz serwer aplikacji i kliknij Uruchom
, aby uruchomić funkcję główną w pliku FcmSubscriptionManager.java:

Wysyłanie wiadomości z zastąpieniami platformy do tematu
Możesz teraz wysłać wiadomość zastępującą platformę tematu. W tym fragmencie kodu:
- Tworzysz prośbę o wysłanie z podstawową wiadomością i tytułem „
A new app is available”. - Wiadomość generuje powiadomienie wyświetlane z tytułem „
A new app is available” na platformach iOS i w internecie. - Komunikat generuje powiadomienie z tytułem „
A new Android app is available” na urządzeniach z Androidem.
private static void sendMessageToFcmTopic() throws Exception {
String topicName = "app_promotion";
Message message =
Message.builder()
.setNotification(
Notification.builder()
.setTitle("A new app is available")
.setBody("Check out our latest app in the app store.")
.build())
.setAndroidConfig(
AndroidConfig.builder()
.setNotification(
AndroidNotification.builder()
.setTitle("A new Android app is available")
.setBody("Our latest app is available on Google Play store")
.build())
.build())
.setTopic("app_promotion")
.build();
FirebaseMessaging.getInstance().send(message);
System.out.println("Message to topic sent successfully!!");
}
W głównej funkcji pliku FcmSender.java odkomentuj sendMessageToFcmTopic();. Kliknij Uruchom
, aby wysłać wiadomość do tematu.
7. Podsumowanie i dalsze kroki
Podsumowując, wiesz już, jak tworzyć angażujące aplikacje na wiele platform za pomocą Fluttera i FCM, w tym jak skonfigurować środowisko, zintegrować zależności oraz odbierać i wysyłać wiadomości. Więcej informacji znajdziesz w tych materiałach:
Ćwiczenia z programowania
- Więcej informacji o tym, jak Flutter współpracuje z innymi usługami Firebase, w tym o uwierzytelnianiu użytkowników i synchronizowaniu danych, znajdziesz w artykule Poznaj Firebase w Flutterze.
- Więcej informacji o FCM, w tym o wiadomościach w aplikacji i tematach, znajdziesz w tych artykułach: Wysyłanie wiadomości do użytkowników za pomocą FCM i FIAM oraz Pierwsza wiadomość push do wielu odbiorców z użyciem tematów FCM.