Per iniziare con FCM, crea il caso d'uso più semplice: inviare un messaggio di notifica di prova dal compositore di notifiche a un dispositivo di sviluppo quando l'app è in background sul dispositivo. Questa pagina elenca tutti i passaggi per raggiungere questo obiettivo, dalla configurazione alla verifica: potrebbe coprire i passaggi che hai già completato se hai configurato un'app client Android per FCM.
Configura l'SDK
Questa sezione copre le attività che potresti aver completato se hai già abilitato altre funzionalità di Firebase per la tua app.
Prima di iniziare
Installa o aggiorna Android Studio all'ultima versione.
Assicurati che il tuo progetto soddisfi questi requisiti:
- Target API livello 19 (KitKat) o superiore
- Utilizza Android 4.4 o versioni successive
- Utilizza Jetpack (AndroidX) , che include il rispetto dei seguenti requisiti di versione:
-
com.android.tools.build:gradle
v3.2.1 o successivo -
compileSdkVersion
28 o successiva
-
Configura un dispositivo fisico o usa un emulatore per eseguire la tua app.
Tieni presente che gli SDK Firebase con una dipendenza dai servizi di Google Play richiedono che sul dispositivo o sull'emulatore siano installati i servizi di Google Play.Accedi a Firebase utilizzando il tuo account Google.
Se non disponi già di un progetto Android e desideri semplicemente provare un prodotto Firebase, puoi scaricare uno dei nostri esempi di avvio rapido .
Crea un progetto Firebase
Prima di poter aggiungere Firebase alla tua app Android, devi creare un progetto Firebase per connetterti alla tua app Android. Visita Comprendere i progetti Firebase per saperne di più sui progetti Firebase.
Registra la tua app con Firebase
Per utilizzare Firebase nella tua app Android, devi registrare la tua app con il tuo progetto Firebase. La registrazione della tua app è spesso chiamata "aggiunta" della tua app al tuo progetto.
Vai alla console Firebase .
Al centro della pagina di panoramica del progetto, fai clic sull'icona Android (
) o su Aggiungi app per avviare il flusso di lavoro di configurazione.Inserisci il nome del pacchetto della tua app nel campo del nome del pacchetto Android .
Il nome del pacchetto identifica in modo univoco la tua app sul dispositivo e nel Google Play Store.
Il nome di un pacchetto viene spesso definito ID applicazione .
Trova il nome del pacchetto della tua app nel file Gradle del tuo modulo (a livello di app), in genere
app/build.gradle
(nome del pacchetto di esempio:com.yourcompany.yourproject
).Tieni presente che il valore del nome del pacchetto fa distinzione tra maiuscole e minuscole e non può essere modificato per questa app Firebase per Android dopo che è stata registrata con il tuo progetto Firebase.
(Facoltativo) Immettere altre informazioni sull'app: nickname dell'app e certificato di firma del debug SHA-1 .
Soprannome dell'app : un identificatore di convenienza interno visibile solo a te nella console Firebase
Debug del certificato di firma SHA-1 : un hash SHA-1 è richiesto dall'autenticazione Firebase (quando si utilizza l'accesso con Google o l' accesso con il numero di telefono ) e Firebase Dynamic Links .
Fare clic su Registra app .
Aggiungi un file di configurazione di Firebase
Aggiungi il file di configurazione di Firebase Android alla tua app:
Fai clic su Scarica google-services.json per ottenere il file di configurazione Android di Firebase (
).google-services.json Sposta il file di configurazione nella directory del modulo (a livello di app) della tua app.
Il file di configurazione di Firebase contiene identificatori univoci, ma non segreti, per il tuo progetto. Per ulteriori informazioni su questo file di configurazione, visita Informazioni sui progetti Firebase .
Puoi scaricare nuovamente il file di configurazione di Firebase in qualsiasi momento.
Assicurati che al nome del file di configurazione non siano aggiunti caratteri aggiuntivi, come
(2)
.
Per abilitare i prodotti Firebase nella tua app, aggiungi il plug-in dei servizi Google ai tuoi file Gradle.
Nel tuo file Gradle a livello di root (a livello di progetto) (
build.gradle
), aggiungi le regole per includere il plug-in Gradle di Google Services. Verifica di avere anche il repository Maven di Google.buildscript { repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository } dependencies { // ... // Add the following line: classpath 'com.google.gms:google-services:4.3.10' // Google Services plugin } } allprojects { // ... repositories { // Check that you have the following line (if not, add it): google() // Google's Maven repository // ... } }
Nel file Gradle del tuo modulo (a livello di app) (di solito
app/build.gradle
), applica il plug-in Gradle di Google Services:apply plugin: 'com.android.application' // Add the following line: apply plugin: 'com.google.gms.google-services' // Google Services plugin android { // ... }
Aggiungi Firebase SDK alla tua app
Utilizzando la BoM Android di Firebase, dichiara la dipendenza per la libreria Android di Firebase Cloud Messaging nel file Gradle del tuo modulo (a livello di app (di solito
app/build.gradle
).Per un'esperienza ottimale con Firebase Cloud Messaging, ti consigliamo di abilitare Google Analytics nel tuo progetto Firebase e di aggiungere l'SDK Firebase per Google Analytics alla tua app.
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.1.0') // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging' implementation 'com.google.firebase:firebase-analytics' }
Utilizzando la BoM Android di Firebase, la tua app utilizzerà sempre versioni compatibili delle librerie Android di Firebase.
(Alternativa) Dichiara le dipendenze della libreria Firebase senza utilizzare la distinta base
Se scegli di non utilizzare la distinta base di Firebase, devi specificare ciascuna versione della libreria Firebase nella relativa riga di dipendenza.
Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare la distinta base per gestire le versioni delle librerie, il che garantisce che tutte le versioni siano compatibili.
dependencies { // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging:23.0.5' implementation 'com.google.firebase:firebase-analytics:21.0.0' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:30.1.0') // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
Utilizzando la BoM Android di Firebase, la tua app utilizzerà sempre versioni compatibili delle librerie Android di Firebase.
(Alternativa) Dichiara le dipendenze della libreria Firebase senza utilizzare la distinta base
Se scegli di non utilizzare la distinta base di Firebase, devi specificare ciascuna versione della libreria Firebase nella relativa riga di dipendenza.
Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare la distinta base per gestire le versioni delle librerie, il che garantisce che tutte le versioni siano compatibili.
dependencies { // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging-ktx:23.0.5' implementation 'com.google.firebase:firebase-analytics-ktx:21.0.0' }
Sincronizza la tua app per assicurarti che tutte le dipendenze abbiano le versioni necessarie.
Le build Gradle che utilizzano il plugin Android Gradle (AGP) v4.2 o precedenti devono abilitare il supporto Java 8. In caso contrario, questi progetti Android ottengono un errore di compilazione quando si aggiunge un SDK Firebase.
Per correggere questo errore di compilazione, puoi seguire una delle due opzioni:
- Aggiungi le
compileOptions
elencate dal messaggio di errore al filebuild.gradle
a livello di app. - Aumenta
minSdkVersion
per il tuo progetto Android a 26 o superiore.
Ulteriori informazioni su questo errore di compilazione in queste domande frequenti .
- Aggiungi le
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.
All'avvio iniziale dell'app, l'SDK FCM genera un token di registrazione per l'istanza dell'app client. Se desideri scegliere come target dispositivi singoli o creare gruppi di dispositivi, dovrai accedere a questo token estendendo FirebaseMessagingService
e sovrascrivendo onNewToken
.
Questa sezione descrive come recuperare il token e come monitorare le modifiche al token. Poiché il token potrebbe essere ruotato dopo l'avvio iniziale, si consiglia vivamente di recuperare l'ultimo token di registrazione aggiornato.
Il token di registrazione può cambiare quando:
- L'app viene ripristinata su un nuovo dispositivo
- L'utente disinstalla/reinstalla l'app
- L'utente cancella i dati dell'app.
Recupera il token di registrazione corrente
Quando devi recuperare il token corrente, chiama FirebaseMessaging.getInstance().getToken()
:
Java
FirebaseMessaging.getInstance().getToken() .addOnCompleteListener(new OnCompleteListener<String>() { @Override public void onComplete(@NonNull Task<String> task) { if (!task.isSuccessful()) { Log.w(TAG, "Fetching FCM registration token failed", task.getException()); return; } // Get new FCM registration token String token = task.getResult(); // Log and toast String msg = getString(R.string.msg_token_fmt, token); Log.d(TAG, msg); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } });
Kotlin+KTX
FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task -> if (!task.isSuccessful) { Log.w(TAG, "Fetching FCM registration token failed", task.exception) return@OnCompleteListener } // Get new FCM registration token val token = task.result // Log and toast val msg = getString(R.string.msg_token_fmt, token) Log.d(TAG, msg) Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() })
Monitora la generazione di token
Il callback onNewToken
ogni volta che viene generato un nuovo token.
Java
/** * There are two scenarios when onNewToken is called: * 1) When a new token is generated on initial app startup * 2) Whenever an existing token is changed * Under #2, there are three scenarios when the existing token is changed: * A) App is restored to a new device * B) User uninstalls/reinstalls the app * C) User clears app data */ @Override public void onNewToken(String token) { Log.d(TAG, "Refreshed token: " + token); // If you want to send messages to this application instance or // manage this apps subscriptions on the server side, send the // FCM registration token to your app server. sendRegistrationToServer(token); }
Kotlin+KTX
/** * Called if the FCM registration token is updated. This may occur if the security of * the previous token had been compromised. Note that this is called when the * FCM registration token is initially generated so this is where you would retrieve the token. */ override fun onNewToken(token: String) { Log.d(TAG, "Refreshed token: $token") // If you want to send messages to this application instance or // manage this apps subscriptions on the server side, send the // FCM registration token to your app server. sendRegistrationToServer(token) }
Dopo aver ottenuto il token, puoi inviarlo al server dell'app e archiviarlo utilizzando il tuo metodo preferito.
Invia un messaggio di notifica di prova
Installa ed esegui l'app sul dispositivo di destinazione.
Assicurati che l'app sia in background sul dispositivo.
Apri il compositore di notifiche e seleziona Nuova notifica .
Inserisci il testo del messaggio.
Seleziona Invia messaggio di prova .
Nel campo Aggiungi un token di registrazione FCM , inserisci il token di registrazione che hai ottenuto in una sezione precedente di questa guida.
Fare clic su Prova
Dopo aver fatto clic su Test , il dispositivo client di destinazione (con l'app in background) dovrebbe ricevere la notifica nella barra delle notifiche di sistema.
Per informazioni dettagliate sulla consegna dei messaggi alla tua app, consulta la dashboard dei rapporti FCM , che registra il numero di messaggi inviati e aperti su dispositivi Apple e Android, insieme ai dati per le "impressioni" (notifiche visualizzate dagli utenti) per le app Android.
Prossimi passi
Invia messaggi alle app in primo piano
Dopo aver inviato correttamente i messaggi di notifica mentre l'app è in background, vedi Ricevere messaggi in un'app Android per iniziare a inviare alle app in primo piano.
Vai oltre i messaggi di notifica
Per andare oltre i messaggi di notifica e aggiungere altri comportamenti più avanzati alla tua app, vedi: