Invia e ricevi notifiche per un'app Flutter utilizzando Firebase Cloud Messaging

1. Introduzione

Ultimo aggiornamento : 2022-04-04

Questo codelab ti guida attraverso il processo di sviluppo di un'app multipiattaforma con Firebase Cloud Messaging (FCM) utilizzando Flutter. Scriverai una parte dell'implementazione dell'app, quindi la costruirai e la eseguirai senza problemi su tre piattaforme: Android, iOS e Web. Imparerai anche come integrare FCM in Flutter e come scrivere il codice per ricevere e inviare messaggi. Infine, il codelab introduce la funzionalità di blocchi specifici della piattaforma dell'API FCM HTTP v1, che consente di inviare un messaggio che ha comportamenti diversi su piattaforme diverse.

Prerequisito

Conoscenza di base di Flutter.

Cosa imparerai

  • Come configurare e creare un'app Flutter.
  • Come aggiungere dipendenze FCM.
  • Come inviare singoli messaggi FCM alla tua app.
  • Come inviare messaggi FCM di argomento alla tua app.

Di cosa avrai bisogno

  • Ultima versione stabile di Android Studio configurata con i plug-in Dart e Flutter.

Puoi eseguire il codelab utilizzando uno dei seguenti dispositivi:

Facoltativamente, per eseguire il codelab utilizzando la piattaforma iOS, sono necessari un dispositivo iOS, un account sviluppatore Apple e un dispositivo macOS con XCode installato.

2. Configurazione dello sbattimento

Se hai già configurato un ambiente di sviluppo Flutter, salta questa sezione.

Per configurare un ambiente di sviluppo Flutter, attenersi alla seguente procedura:

  1. Scarica e installa Flutter per il tuo sistema operativo: Installa | Svolazzare
  2. Assicurati che lo strumento Flutter sia aggiunto al tuo percorso.
  3. Configura il tuo editor per Flutter come mostrato in Configurare un editor | Flutter Assicurati di installare i plugin Flutter e Dart per il tuo editor. Per il resto del codelab utilizzerai Android Studio.
  4. Dalla riga di comando, esegui flutter doctor , che esegue la scansione della configurazione ed elenca tutte le dipendenze mancanti che devono essere corrette. Segui le istruzioni per correggere eventuali dipendenze importanti mancanti. Tieni presente che alcune dipendenze potrebbero non essere necessarie. Ad esempio, se non svilupperai per iOS, la mancanza di una dipendenza CocoaPods non costituirà un problema di blocco.
  5. Esegui questo comando per creare la tua app Flutter nella directory fcmflutter flutter create --org com.flutter.fcm --project-name fcmflutter fcmflutter , quindi cambia le directory in fcmflutter .
  1. In Android Studio, vai su File -> Apri , trova il percorso della tua app Flutter e quindi fai clic su Apri per aprire il progetto in Android Studio. Il codice dell'app si trova nel file lib/main.dart .

Sulla barra degli strumenti di Android Studio, fai clic sulla freccia giù per selezionare un dispositivo Android. Se il selettore di destinazione è vuoto, installa dispositivi Android virtuali oppure il browser Chrome o il simulatore iOS se preferisci avviare l'app da un browser Web o un dispositivo iOS. Potrebbe essere necessario avviare manualmente il dispositivo e aggiornare l'elenco per trovare il dispositivo di destinazione.

Una barra degli strumenti di Android Studio con la freccia a discesa del menu di destinazione della build evidenziata.

Fare clic su Esegui Il pulsante Esegui in Android Studio per avviare l'app.

L'interfaccia utente di un'app demo Flutter lanciata

Congratulazioni! Hai creato con successo un'app Flutter.

3. Configurazione di Firebase e FlutterFire

Per sviluppare un'app che si integri con Firebase Cloud Messaging utilizzando Flutter, devi:

  • Un progetto Firebase.
  • Una CLI Firebase funzionante.
  • Un'installazione di FlutterFire.
  • Un'app configurata e generata con flutterfire configure .

Crea il tuo progetto Firebase

Se hai già un progetto Firebase, puoi saltare questo passaggio.

  1. Se disponi di un account Google, apri Firebase e accedi con il tuo account Google, quindi fai clic su Vai alla console .
  2. Nella console Firebase, fai clic su Aggiungi progetto . Segui le istruzioni per creare un progetto. Non selezionare Abilita Google Analytics per questo progetto perché non lo utilizzerai in questo progetto.
  3. Dopo aver creato il progetto, vai alle Impostazioni progetto del progetto facendo clic sull'icona a forma di ingranaggio accanto a Panoramica del progetto .

Uno screenshot ritagliato della console Firebase che evidenzia l'icona per il menu delle impostazioni del progetto e il file

L' ID progetto viene utilizzato per identificare in modo univoco il progetto e potrebbe essere diverso dal Nome progetto . L'ID progetto verrà utilizzato per configurare FlutterFire in un secondo momento.

Uno screenshot ritagliato della console Firebase che evidenzia l'ID progetto

Congratulazioni! Hai creato con successo un progetto Firebase.

Configura la CLI Firebase

Se hai configurato la CLI Firebase, puoi saltare questo passaggio.

Vai al riferimento CLI di Firebase per scaricare e installare la CLI di Firebase. Accedi a Firebase con il tuo account Google con il seguente comando:

firebase login

Configura FlutterFire

  1. Installa il plugin FlutterFire usando il comando: flutter pub add firebase_core
  2. Installa il plugin FCM: flutter pub add firebase_messaging
  3. Configura la CLI FlutterFire: dart pub global activate flutterfire_cli
  4. Configura il progetto Firebase su Flutter: flutterfire configure --project=fcm4flutter. Utilizza i tasti freccia e la barra spaziatrice per selezionare le piattaforme o premi Invio per utilizzare le piattaforme predefinite.

Questo codelab utilizza le piattaforme predefinite (Android, iOS e Web), ma puoi selezionare solo una o due piattaforme. Se ti viene richiesto l'ID del bundle iOS, inserisci com.flutter.fcm.fcmflutter o il tuo ID del bundle iOS nel formato [company domain name].[project name] . Una volta completato il comando, aggiorna la pagina della Console Firebase. Vedrai che ha creato app per le piattaforme selezionate nel progetto Firebase.

Uno screenshot ritagliato della console Firebase che mostra le app create per le piattaforme selezionate

Questo comando genera un file firebase_options.dart nella directory lib , che contiene tutte le opzioni richieste per l'inizializzazione.

Configura la messaggistica cloud per iOS

  1. Passare alla pagina dello sviluppatore Apple e fare clic su Crea una chiave nella scheda Chiavi .

Uno screenshot ritagliato della pagina dello sviluppatore Apple che evidenzia i componenti della pagina per la creazione della chiave

  1. Inserisci il nome della chiave e controlla i servizi Apple Push Notifications (APN) . Uno screenshot ritagliato della pagina degli sviluppatori Apple che evidenzia la casella di testo per il nuovo nome della chiave
  2. Scarica il file chiave, che ha un'estensione di file .p8 . Uno screenshot ritagliato della pagina degli sviluppatori Apple che evidenzia il pulsante per scaricare una chiave
  3. Nella console Firebase , vai alle Impostazioni progetto del progetto e scegli la scheda Messaggistica cloud .

Uno screenshot ritagliato della pagina della console Firebase che evidenzia i componenti per l'aggiornamento delle impostazioni del progetto

Uno screenshot ritagliato della pagina della console Firebase che evidenzia la scheda Messaggistica cloud

  1. Carica il file della chiave APN per l'app iOS nella scheda Messaggistica cloud . Inserisci l'ID della chiave APN dalla scheda Cloud Messaging e l'ID del team, che puoi trovare nel centro membri Apple. Uno screenshot ritagliato della pagina della console Firebase che evidenzia i pulsanti per caricare una chiave di autenticazione APN

4. Preparazione dell'FCM

Prima che un'app possa ricevere messaggi da FCM, deve:

  • Inizializza FlutterFire.
  • Richiedi autorizzazioni di notifica.
  • Registrati con FCM per ottenere un token di registrazione.

Inizializzazione

Per inizializzare il servizio, sostituire la funzione main ( lib/main.dart ) con questo codice:

// 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

 runApp(MyApp());
}

Quindi esegui Tools -> Flutter -> Flutter Pub Get in Android Studio per caricare i pacchetti aggiunti in Set up FlutterFire e visualizzare il codice con l'impostazione Intellisense appropriata in Android Studio.

Ciò inizializza FlutterFire per la piattaforma corrente DefaultFirebaseOptions.currentPlatform , che viene importata dal file firebase_options.dart generato. Tieni presente che initializeApp è una funzione asincrona e la parola chiave await garantisce che l'inizializzazione sia completa prima di eseguire l'applicazione.

Richiesta di permesso

L'app deve chiedere l'autorizzazione dell'utente per ricevere notifiche. Il metodo requestPermission fornito da firebase_messaging mostra una finestra di dialogo o un popup che richiede all'utente di consentire o negare l'autorizzazione.

Innanzitutto, copia questo codice nella funzione principale sotto il commento TODO: Request permission . Le settings restituite indicano se l'utente ha concesso l'autorizzazione. Ti consigliamo di richiedere l'autorizzazione solo quando l'utente deve utilizzare una funzionalità che richiede l'accesso (ad esempio, quando l'utente attiva le notifiche nelle impostazioni dell'app). In questo codelab chiediamo l'autorizzazione all'avvio dell'app per semplicità.

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}');
 }

Successivamente, sulla barra degli strumenti di Android Studio, seleziona Chrome (web) dal selettore di destinazione, quindi esegui nuovamente l'app.

Uno screenshot ritagliato della barra degli strumenti di Android Studio con il selettore di destinazione e il pulsante Esegui

Quindi, viene avviata una scheda di Chrome con un popup che richiede l'autorizzazione. Se fai clic su Allow , vedrai un registro nella console di Android Studio: Permission granted: AuthorizationStatus.authorized . Dopo aver consentito o bloccato la richiesta di autorizzazione, la tua risposta viene archiviata insieme all'app nel browser e il popup non viene più visualizzato. Tieni presente che quando esegui nuovamente l'app Web su Android Studio, ti potrebbe essere richiesta nuovamente l'autorizzazione. Uno screenshot ritagliato di una scheda di Chrome con un popup che richiede

Registrazione

Copia questo codice nella funzione principale sotto il commento TODO: Register with FCM per registrarti con FCM. La chiamata getToken restituisce un token di registrazione che può essere utilizzato dal server delle applicazioni o dall'ambiente del server attendibile per inviare messaggi agli utenti.

// 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');
}

Sulla barra degli strumenti di Android Studio, seleziona un dispositivo Android ed esegui l'app. Nella console di Android Studio, il token di registrazione viene stampato in questo modo:

I/flutter ( 3717): Permission granted: AuthorizationStatus.authorized
I/flutter ( 3717): Registration Token=dch. . . D2P:APA9. . .kbb4

Copialo in un editor di testo, poiché lo utilizzerai per inviare messaggi in seguito.

uses-sdk:minSdkVersion 16 cannot be smaller than version 19 declared in library [:firebase_messaging]

Passaggi aggiuntivi per ricevere messaggi sul web

Le app Web necessitano di due passaggi aggiuntivi per ottenere il token di registrazione e ascoltare i messaggi in arrivo. Il Web deve passare una chiave VAPID a getToken per autorizzare le richieste di invio ai servizi push Web supportati.

Innanzitutto, apri la scheda Cloud Messaging del progetto Firebase nella Console Firebase, scorri verso il basso fino alla sezione Configurazione Web per trovare la coppia di chiavi esistente o generare una nuova coppia di chiavi. Fare clic sul pulsante evidenziato per copiare la chiave in modo che possa essere utilizzata come vapidKey.

Uno screenshot ritagliato del componente Web Push Certificates della pagina di configurazione Web che evidenzia la coppia di chiavi

Successivamente, sostituisci il codice di registrazione nella sezione Registrazione con questo codice e quindi aggiorna vapidKey:

// 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');
 }

Quindi, crea un file firebase-messaging-sw.js sotto la directory web/ nella radice del tuo progetto. Copia quanto segue in firebase-messaging-sw.js per consentire all'app Web di ricevere eventi onMessage . Per ulteriori informazioni, vedere Impostazione delle opzioni di notifica nell'operatore del servizio .

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: "...",
 databaseURL: "...",
 projectId: "...",
 storageBucket: "...",
 messagingSenderId: "...",
 appId: "...",
};

firebase.initializeApp(firebaseConfig);
const messaging = firebase.messaging();

// todo Set up background message handler

Successivamente, in Impostazioni progetto -> scheda Generale , scorri verso il basso e trova l' app Web , copia la sezione del codice firebaseConfig e incollala in firebase-messaging-sw.js . Uno screenshot ritagliato del componente App Web della pagina di configurazione di Firebase

Infine, sulla barra degli strumenti di Android Studio, seleziona Chrome (web) nel selettore di destinazione ed esegui l'app. Nella console di Android Studio, il token di registrazione viene stampato in questo modo:

Debug service listening on ws://127.0.0.1:61538/BLQQ3Fg-h7I=/ws
Permission granted: AuthorizationStatus.authorized
Registration Token=fH. . .ue:APA91. . .qwt3chpv

Copia il token di registrazione in un editor di testo in modo da poterlo utilizzare per inviare messaggi in un secondo momento.

Passaggi aggiuntivi per ricevere messaggi su iOS

Per ricevere messaggi da FCM, i dispositivi iOS devono abilitare le notifiche push e le modalità in background su Xcode:

  1. In Android Studio, fai clic con il pulsante destro del mouse sul nome del progetto, quindi seleziona Flutter -> Apri modulo iOS in Xcode . Uno screenshot ritagliato di
  2. Dopo l'avvio di Xcode, abilita le notifiche push e le modalità in background nella scheda Firma e funzionalità per la destinazione del progetto. Vedi Configura la tua app per ulteriori informazioni.
  3. Sulla barra degli strumenti di Android Studio, seleziona un dispositivo iOS nel selettore di destinazione ed esegui l'app. Dopo aver concesso l'autorizzazione alla notifica, il token di registrazione viene stampato nella console di Android Studio.

Uno screenshot ritagliato di un'app iOS che richiede l'autorizzazione per inviare notifiche

Congratulazioni, hai registrato correttamente la tua app con FCM. Sei pronto per ricevere messaggi, come descritto nella sezione successiva.

5. Ricevi messaggi da FCM

Configura i gestori dei messaggi

L'app deve gestire gli eventi onMessage quando arrivano i messaggi mentre l'app è in modalità in primo piano e gli eventi onBackgroundMessage quando l'app è in background.

Gestore di messaggi in primo piano

Innanzitutto, aggiungi un controller di flusso dopo il commento TODO: Add stream controller nel file main.dart per passare i messaggi dal gestore eventi all'interfaccia utente.

import 'package:rxdart/rxdart.dart';
// used to pass messages from event handler to the UI
final _messageStreamController = BehaviorSubject<RemoteMessage>();

Per aggiungere la dipendenza rxdart, esegui questo comando dalla directory del progetto: flutter pub add rxdart .

Successivamente, esegui Tools -> Flutter -> Flutter Pub Get in Android Studio per caricare il pacchetto rxdart.dart e visualizzare il codice con le impostazioni Intellisense appropriate in Android Studio.

Quindi, aggiungi un gestore eventi per ascoltare i messaggi in primo piano dopo il commento TODO: Set up foreground message handler . Stampa i log e pubblica il messaggio sul controller del flusso.

 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);
 });

Successivamente, sostituisci il widget Stato originale nel file main.dart con questo codice, che aggiunge un sottoscrittore al controller del flusso nel widget Stato e visualizza l'ultimo messaggio sul widget.

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),
         ],
       ),
     ),
   );
 }
}

Gestore di messaggi in background per Android/iOS

I messaggi vengono gestiti dal gestore onBackgroundMessage mentre l'app è in background. Il gestore dovrebbe essere una funzione di primo livello. L'interfaccia utente può essere aggiornata quando l'app viene portata in primo piano gestendo i messaggi (vedi Gestione dell'interazione ) o sincronizzandosi con il server dell'app.

Crea la funzione del gestore dopo il commento TODO: Define the background message handler all'esterno della funzione principale e chiamalo nella funzione principale dopo il commento 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());
}

Gestore di messaggi in background per il web

A partire da FlutterFire firebase_messaging versione 11.2.8, la gestione dei messaggi in background su piattaforme basate sul Web richiede un flusso diverso. Pertanto, è necessario aggiungere un gestore di messaggi separato nel service work web/firebase-messaging-sw.js .

messaging.onBackgroundMessage((message) => {
 console.log("onBackgroundMessage", message);
});

Configura il server dell'app

  1. Importa il codice del server iniziale aprendo il progetto https://github.com/FirebaseExtended/firebase_fcm_flutter/tree/main/server in Android Studio. Il server è un progetto Java basato su Gradle con una dipendenza dall'SDK firebase-admin , che fornisce la funzionalità di invio di messaggi FCM.
  2. Configura un account di servizio Firebase che consenta all'SDK di amministrazione di Firebase di autorizzare le chiamate alle API FCM. Apri le Impostazioni progetto nella console Firebase e seleziona la scheda Account di servizio . Scegli "Java" e fai clic su Generate new private key per scaricare lo snippet di configurazione. Uno screenshot ritagliato che evidenzia lo snippet di configurazione dell'SDK Admin del componente Account di servizio della pagina Impostazioni progetto
  3. Rinominare il file in service-account.json e copiarlo nel percorso src/main/resources del progetto server.

Invia un messaggio di prova

Nel file FcmSender.java , sendMessageToFcmRegistrationToken compone un messaggio di notifica con un payload di dati. Il token di registrazione ha come destinazione l'istanza dell'app a cui viene inviato il messaggio.

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!!");
 }
  1. Copia il token di registrazione Android copiato dalla sezione Registrazione e incollalo nel valore della variabile registrationToken .
  2. Fare clic su Esegui Il pulsante Esegui in Android Studio per eseguire la funzione principale e inviare il messaggio all'utente tramite FCM. Uno screenshot ritagliato dell'icona Esegui mostrata accanto alla funzione principale FcmSender.java in Android Studio

Quando l'app Android è in background, il messaggio viene visualizzato nella barra delle notifiche.

Uno screenshot ritagliato di un messaggio visualizzato nella barra delle notifiche di Android

Quando l'app Android è in primo piano, vedrai un registro nella console di Android Studio: "Gestione di un messaggio in primo piano". Il contenuto del messaggio viene visualizzato anche nell'interfaccia utente perché l'interfaccia utente è sottoscritta al controller del flusso per i nuovi messaggi.

Uno screenshot ritagliato del contenuto del messaggio visualizzato nell'app Android

Se incolli il token di registrazione e invii il messaggio dal server dell'app o da un altro ambiente server attendibile, vedrai un comportamento simile:

  • Quando l'app Web è in background (ovvero quando è nascosta da un'altra finestra o un'altra scheda è attiva), vedrai una notifica Web.

Uno screenshot ritagliato di una notifica web mostrata nel browser Chrome

  • Quando l'app Web è in primo piano, puoi visualizzare il registro nella console di Chrome facendo clic con il pulsante destro del mouse sul Web e selezionando Inspect . Il contenuto del messaggio viene visualizzato anche nell'interfaccia utente. Uno screenshot ritagliato della console di Chrome con i log di debug

6. Invia un messaggio di argomento

La funzionalità di override della piattaforma dell'API HTTP v1 FCM consente a una richiesta di invio di messaggi di avere comportamenti diversi su piattaforme diverse. Un caso d'uso di questa funzionalità è visualizzare contenuti diversi dei messaggi di notifica in base alla piattaforma. La funzionalità viene utilizzata in modo più completo quando si targetizzano più dispositivi (che potrebbero estendersi su più piattaforme) con messaggi di argomento. Questa sezione ti guida attraverso i passaggi per fare in modo che la tua app riceva un messaggio di argomento personalizzato per ciascuna piattaforma.

Sottoscrivere un argomento dal client

Per iscriverti a un argomento, chiama il metodo messaging.subscribeToTopic alla fine della funzione main nel file main.dart dell'app Flutter.

// subscribe to a topic.
const topic = 'app_promotion';
await messaging.subscribeToTopic(topic);

[Facoltativo] Sottoscrivere un argomento dal server per il web

Puoi saltare questa sezione se non stai sviluppando sulla piattaforma web.

L'SDK JS di FCM attualmente non supporta la sottoscrizione di argomenti lato client. Puoi invece iscriverti utilizzando l'API di gestione degli argomenti lato server di Admin SDK. Questo codice illustra la sottoscrizione dell'argomento lato server con Java Admin SDK.

 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());
 }

Apri il server delle applicazioni e fai clic su Esegui Il pulsante Esegui in Android Studio per eseguire la funzione principale nel file FcmSubscriptionManager.java :

Uno screenshot ritagliato dell'icona Esegui mostrata accanto alla funzione principale FcmSubscriptionManager.java in Android Studio

Invia un messaggio con l'override della piattaforma a un argomento

Ora sei pronto per inviare un messaggio di override della piattaforma dell'argomento. Nel seguente frammento di codice:

  • Costruisci una richiesta di invio con un messaggio di base e un titolo " A new app is available ".
  • Il messaggio genera una notifica visualizzata dal titolo " A new app is available " su piattaforme iOS e web.
  • Il messaggio genera una notifica visualizzata con titolo " A new Android app is available " sui dispositivi Android.
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!!");
 }

Nella funzione principale del file FcmSender.java , decommentare sendMessageToFcmTopic(); . Fare clic su Esegui Il pulsante Esegui in Android Studio per inviare il messaggio dell'argomento.

7. Riepilogo e cosa verrà dopo

Per riassumere, hai imparato come coinvolgere lo sviluppo di app multipiattaforma utilizzando Flutter e FCM, che include la configurazione dell'ambiente, l'integrazione delle dipendenze e la ricezione e l'invio di messaggi. Per approfondire, consulta i seguenti materiali:

Codelab

Riferimenti