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.
- Apri l'area di lavoro del tuo progetto Xcode (
ios/Runner.xcworkspace
). - Abilita le notifiche push .
- Abilita le modalità di esecuzione in background 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 .
- All'interno del progetto nella console Firebase, seleziona l'icona a forma di ingranaggio, seleziona Impostazioni progetto , quindi seleziona la scheda Cloud Messaging .
- Selezionare il pulsante Carica certificato per il certificato di sviluppo, il certificato di produzione o entrambi. Ne è richiesto almeno uno.
- Per ogni certificato, selezionare il file .p12 e fornire 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. È necessario lo swizzling e, senza di esso, le funzionalità chiave di Firebase come la gestione dei token FCM non funzionano correttamente.
Androide
Servizi Google Play
I client FCM richiedono dispositivi che eseguono Android 4.4 o versioni successive in cui sono installati anche i servizi Google Play o un emulatore che esegue Android 4.4 con le API di Google. Tieni presente che non sei limitato a distribuire le tue app Android tramite Google Play Store.
Le app che si basano sull'SDK di Play Services devono sempre verificare la presenza sul dispositivo di un APK di Google Play Services compatibile prima di accedere alle funzionalità di Google Play Services. Si consiglia di eseguire questa operazione in due posizioni: nel metodo onCreate()
dell'attività principale e nel relativo metodo onResume()
. Il check in onCreate()
garantisce che l'app non possa essere utilizzata senza un controllo riuscito. Il check in onResume()
garantisce che se l'utente torna all'app in esecuzione tramite altri mezzi, ad esempio tramite il pulsante Indietro, il controllo viene comunque eseguito.
Se il dispositivo non dispone di una versione compatibile di Google Play Services, la tua app può chiamare GoogleApiAvailability.makeGooglePlayServicesAvailable()
per consentire agli utenti di scaricare Google Play Services dal Play Store.
ragnatela
Configura le credenziali Web con FCM
L'interfaccia Web di FCM utilizza credenziali Web denominate "Identificazione volontaria del server delle applicazioni" o chiavi "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 coppia di chiavi esistente tramite la console Firebase.
Genera una nuova coppia di chiavi
Apri la scheda Cloud Messaging del riquadro Impostazioni della console Firebase e scorri fino alla sezione Configurazione Web .
Nella scheda Certificati Web Push , fai 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 di 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 tue istanze di 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 nel formato con codifica sicura dell'URL base64:
Apri la scheda Cloud Messaging del riquadro Impostazioni della console Firebase e scorri fino alla sezione Configurazione Web .
Nella scheda Certificati Web Push , trova e seleziona il testo del link "importa una coppia di chiavi esistente".
Nella finestra di dialogo Importa una coppia di chiavi , fornisci le chiavi pubblica e privata nei campi corrispondenti e fai clic su Importa . La console visualizza la stringa della chiave pubblica e la data di aggiunta.
Per ulteriori informazioni sul formato delle chiavi e su come generarle, consulta Chiavi del server applicazioni .
Installa il plugin FCM
Installa e inizializza i plug-in Firebase per Flutter se non lo hai già fatto.
Dalla radice del tuo progetto Flutter, esegui il seguente comando per installare il plugin:
flutter pub add firebase_messaging
Una volta completato, 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 della console delle notifiche, 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 ricevere una notifica 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 in Firebase. Se preferisci impedire la generazione automatica del 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 FCM (devi disabilitare entrambi) 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" />
Riabilita l'init automatico di FCM in fase di esecuzione
Per abilitare l'auto-init per un'istanza specifica dell'app, 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 downstream con il compositore di notifiche . Vedere inviare un messaggio di prova a un'app in background .
Per aggiungere altri comportamenti più avanzati alla tua app, avrai bisogno di un'implementazione del server .
Quindi, nel client dell'app: