Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Configura un'app client Firebase Cloud Messaging su Flutter

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Segui questi passaggi per configurare un client FCM su Flutter.

Configurazione e requisiti specifici della piattaforma

Alcuni dei passaggi richiesti dipendono dalla piattaforma a cui ti rivolgi.

iOS+

Abilita le funzionalità dell'app in Xcode

Prima che la tua applicazione possa iniziare a ricevere messaggi, devi abilitare le notifiche push e le modalità in background nel tuo progetto Xcode.

  1. Apri l'area di lavoro del tuo progetto Xcode ( ios/Runner.xcworkspace ).
  2. Abilita le notifiche push .
  3. Abilita le modalità di esecuzione in background di Recupero in background e Notifiche remote .

Carica la tua chiave di autenticazione APNs

Prima di utilizzare FCM, carica il tuo certificato APN su Firebase. Se non disponi già di un certificato APNs, creane uno nell'Apple Developer Member Center .

  1. All'interno del tuo progetto nella console Firebase, seleziona l'icona a forma di ingranaggio, seleziona Impostazioni progetto e quindi seleziona la scheda Messaggistica cloud .
  2. Seleziona il pulsante Carica certificato per il tuo certificato di sviluppo, il tuo certificato di produzione o entrambi. Almeno uno è richiesto.
  3. Per ogni certificato, seleziona il file .p12 e fornisci la password, se presente. Assicurati che l'ID bundle per questo certificato corrisponda all'ID bundle della tua app. Seleziona Salva .

Metodo frizzante

Per utilizzare il plug-in FCM Flutter sui dispositivi Apple, non devi disabilitare il metodo swizzling. Swizzling è necessario e, senza di esso, le funzionalità chiave di Firebase come la gestione dei token FCM non funzionano correttamente.

Androide

Servizi di Google Play

I client FCM richiedono dispositivi con Android 4.4 o versioni successive su cui sono installati anche i servizi Google Play o un emulatore con Android 4.4 con API di Google. Tieni presente che non sei limitato a distribuire le tue app Android tramite Google Play Store.

Le app che si basano su Play Services SDK dovrebbero sempre controllare il dispositivo per un APK dei servizi Google Play compatibile prima di accedere alle funzioni dei servizi di Google Play. Si consiglia di farlo in due posizioni: nel metodo onCreate() dell'attività principale e nel metodo onResume() . Il check-in onCreate() assicura che l'app non possa essere utilizzata senza un controllo riuscito. Il check-in onResume() assicura che se l'utente torna all'app in esecuzione con altri mezzi, ad esempio tramite il pulsante Indietro, il controllo viene comunque eseguito.

Se il dispositivo non dispone di una versione compatibile dei servizi di Google Play, la tua app può chiamare GoogleApiAvailability.makeGooglePlayServicesAvailable() per consentire agli utenti di scaricare i servizi di Google Play dal Play Store.

ragnatela

Configura le credenziali web con FCM

L'interfaccia Web di FCM utilizza credenziali Web denominate chiavi "Voluntary Application Server Identification" o "VAPID", per autorizzare l'invio di richieste ai servizi push Web supportati. Per iscrivere la tua app alle notifiche push, devi associare una coppia di chiavi al tuo progetto Firebase. Puoi generare una nuova coppia di chiavi o importare la tua coppia di chiavi esistente tramite la console Firebase.

Genera una nuova coppia di chiavi
  1. Apri la scheda Messaggistica cloud del riquadro Impostazioni della console Firebase e scorri fino alla sezione Configurazione Web .

  2. Nella scheda Certificati Web Push , fare clic su Genera coppia di chiavi . La console visualizza un avviso che la coppia di chiavi è stata generata e visualizza la stringa della chiave pubblica e la data aggiunta.

Importa una coppia di chiavi esistente

Se disponi di una coppia di chiavi esistente che stai già utilizzando con la tua app Web, puoi importarla in FCM in modo da poter raggiungere le istanze delle app Web esistenti tramite le API FCM. Per importare le chiavi, devi disporre dell'accesso a livello di proprietario al progetto Firebase. Importa la tua chiave pubblica e privata esistente in forma codificata con URL base64:

  1. Apri la scheda Messaggistica cloud del riquadro Impostazioni della console Firebase e scorri fino alla sezione Configurazione Web .

  2. Nella scheda Certificati Web Push , trova e seleziona il testo del collegamento "importa una coppia di chiavi esistente".

  3. Nella finestra di dialogo Importa una coppia di chiavi , fornisci le tue chiavi pubbliche e private nei campi corrispondenti e fai clic su Importa . La console visualizza la stringa della chiave pubblica e la data aggiunta.

Per ulteriori informazioni sul formato delle chiavi e su come generarle, vedere Chiavi del server delle applicazioni .

Installa il plug-in FCM

  1. Installa e inizializza i plug-in Firebase per Flutter se non l'hai già fatto.

  2. Dalla radice del tuo progetto Flutter, esegui il seguente comando per installare il plug-in:

    flutter pub add firebase_messaging
    
  3. Una volta completata, ricostruisci la tua applicazione Flutter:

    flutter run
    

Accedi al token di registrazione

Per inviare un messaggio a un dispositivo specifico, devi conoscere il token di registrazione di quel dispositivo. Poiché per completare questo tutorial dovrai inserire il token in un campo nella console di notifica, assicurati di copiare il token o di archiviarlo in modo sicuro dopo averlo recuperato.

Per recuperare il token di registrazione corrente per un'istanza dell'app, chiama getToken() . Se l'autorizzazione di notifica non è stata concessa, questo metodo chiederà all'utente le autorizzazioni di notifica. In caso contrario, restituisce un token o rifiuta il futuro a causa di un errore.

final fcmToken = await FirebaseMessaging.instance.getToken();

Sulle piattaforme web, passa la tua chiave pubblica VAPID a getToken() :

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

Per essere avvisato ogni volta che il token viene aggiornato, iscriviti allo stream onTokenRefresh :

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

Impedisci l'inizializzazione automatica

Quando viene generato un token di registrazione FCM, la libreria carica l'identificatore e i dati di configurazione su Firebase. Se preferisci impedire la generazione automatica dei token, disabilita l'inizializzazione automatica in fase di compilazione.

iOS

Su iOS, aggiungi un valore di metadati al tuo Info.plist :

FirebaseMessagingAutoInitEnabled = NO

Androide

Su Android, disabilita la raccolta di Analytics e l'inizializzazione automatica di FCM (devi disabilitarle entrambe) aggiungendo questi valori di metadati al tuo AndroidManifest.xml :

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

Riattiva l'auto-init di FCM in fase di esecuzione

Per abilitare l'auto-init per un'istanza dell'app specifica, chiama setAutoInitEnabled() :

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Questo valore persiste tra i riavvii dell'app una volta impostato.

Prossimi passi

Dopo aver configurato l'app client, sei pronto per iniziare a inviare messaggi a valle con Notifications composer . Consulta Inviare un messaggio di prova a un'app in background .

Per aggiungere un altro comportamento più avanzato alla tua app, avrai bisogno di un'implementazione del server .

Quindi, nel client dell'app: