1. Introduzione
Rispetto all'API FCM precedente, l'API FCM HTTP v1 fornisce un modello di autorizzazione più sicuro che utilizza token di accesso di breve durata. I passaggi per la generazione del token di accesso per l'API FCM v1 sono significativamente diversi da quelli per l'API precedente.
Questo codelab ti guida nella procedura di configurazione lato client e lato server per attivare l'invio di notifiche push a un'app per Android utilizzando l'API HTTP v1 di FCM. Evidenzia il passaggio chiave della generazione delle credenziali per l'API v1.
Ulteriori informazioni sono disponibili ai seguenti indirizzi:
Prerequisiti
- Conoscenza di base dello sviluppo Java e Android
Obiettivi didattici
- Procedura dettagliata per la configurazione lato client e lato server per abilitare l'invio di notifiche push alla tua app per Android utilizzando l'API FCM HTTP v1
- Generazione delle credenziali per l'API HTTP v1 utilizzando gli account di servizio
- Invio di messaggi di prova tramite l'API HTTP v1
Che cosa ti serve
Ultima versione stabile di Android Studio
Uno dei seguenti dispositivi:
- Un dispositivo Android fisico collegato al computer.
- Un emulatore Android (vedi Eseguire app nell'emulatore Android)
Un ambiente di sviluppo Java o un editor di codice a tua scelta
2. Configurazione del progetto Firebase e dell'app per Android
Al termine del lab sul codice, potrai inviare messaggi alla tua app utilizzando Firebase Cloud Messaging. Prima di farlo, dovrai creare un progetto Firebase. Questo codelab fornisce anche un'app per Android contenente codice di esempio da integrare con FCM.
Configurazione del progetto Firebase
- Segui il "Passaggio 1: crea un progetto Firebase" per creare il tuo progetto Firebase per questo codelab.
Configurazione dell'app per Android
L'app per Android di esempio fornita in questo codelab è già integrata in FCM. Dopo l'avvio, si registrerà sul server FCM e sottoscriverà un argomento. Nei passaggi successivi di questo codelab, invierai un messaggio relativo all'argomento e la tua app lo riceverà.
- Scarica l'esempio della guida rapida per Firebase per Android.
- Importa il progetto da https://github.com/firebase/quickstart-android/tree/master/messaging in Android Studio.
- Registra l'app nella console Firebase. Il nome dell'app è
com.google.firebase.quickstart.fcm
. Registra questa app nel tuo progetto Firebase seguendo i passaggi descritti nella sezione "Passaggio 2: Registra l'app con Firebase". - Segui la parte 1 di "Passaggio 3: Aggiungi un file di configurazione di Firebase" per scaricare
google-services.json
e aggiungerlo al progetto. Compila ed esegui il progetto.
3. Configurare il server delle app
Ora che l'app è configurata, devi scaricare un esempio di codice lato server per l'invio di messaggi all'app utilizzando l'API FCM v1. Questo codice carica le credenziali API (descritte nella sezione successiva) per generare un token di accesso. Invia quindi un messaggio alla tua app utilizzando la messaggistica relativa agli argomenti FCM.
- Importa il codice del server di avvio scaricando il progetto GitHub. Il progetto "messaging" è un progetto Java basato su Gradle con una dipendenza dall'SDK firebase-admin, che fornisce funzionalità per l'invio di messaggi.
Per ulteriori dettagli su come un server app deve funzionare con FCM, consulta il documento Il tuo ambiente server e FCM.
4. Recupera le credenziali v1
L'API FCM HTTP v1 utilizza token di accesso di breve durata in base al modello di sicurezza OAuth2. Rispetto alla chiave API statica utilizzata nell'API FCM precedente, il token di accesso a breve termine è meno soggetto al rischio di fuga di credenziali. Questa sezione descrive dettagliatamente i passaggi per creare una credenziale per generare il token di accesso utilizzato per chiamare l'API.
- Configura un account di servizio Firebase per consentire all'SDK Admin Firebase di autorizzare le chiamate alle API FCM. Apri Impostazioni progetto nella console Firebase e seleziona la scheda Account di servizio. Fai clic su Genera nuova chiave privata per scaricare lo snippet di configurazione.
- Nel progetto GitHub scaricato, rinomina il file scaricato in
service-account.json
e copialo nel percorsomessaging/
del progetto. - Il metodo
getAccessToken()
(mostrato di seguito) nella classeMessaging.java
genera un token OAuth2 valido per un'ora.
private static String getAccessToken() throws IOException { GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES)); googleCredentials.refresh(); return googleCredentials.getAccessToken().getTokenValue(); }
- Cambia il metodo principale aggiungendo la riga seguente:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Vai alla directory di messaggistica/ progetto nel tuo terminale e digita:
./gradlew run -Pmessage=common-message
per stampare il token OAuth2.
Puoi trovare ulteriori informazioni in Autorizzare le richieste di invio.
5. Invia un messaggio con l'API REST
Ora è tutto pronto per inviare un messaggio tramite l'API HTTP v1. Procedi nel seguente modo:
- Per aggiungere il token di accesso a un'intestazione della richiesta HTTP:
- Aggiungi il token come valore dell'intestazione Authorization nel formato
Authorization: Bearer <access_token>
- Effettua una richiesta HTTP all'API FCM v1 utilizzando curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send
Il valore $topic_name
riportato sopra è disponibile nel codice dell'app per Android menzionato nel progetto Firebase e nella configurazione dell'app per Android. Il valore predefinito è "weather"
.
- Dopo che un messaggio è stato consegnato correttamente, sullo schermo dovrebbe essere visualizzata una notifica popup, simile all'immagine seguente:
6. Conclusione
Complimenti! Hai completato il codelab per:
- Configurare un progetto Firebase
- Integra Firebase con un'app per Android
- Crea le credenziali per l'API HTTP v1 di FCM
- Invia un messaggio alla tua app tramite l'API HTTP v1 di FCM
Per esplorare le funzionalità avanzate offerte da FCM, sono utili i seguenti riferimenti: