1. Introduzione
Rispetto all'API legacy FCM, l'API HTTP v1 di FCM fornisce un modello di autorizzazione più sicuro utilizzando token di accesso di breve durata. I passaggi per generare il token di accesso per l'API FCM v1 sono significativamente diversi dai passaggi per l'API legacy.
Questo codelab ti guida attraverso il processo di configurazione lato client e server per abilitare l'invio di notifiche push a un'app Android utilizzando l'API FCM HTTP v1. Evidenzia il passaggio chiave della generazione di credenziali per l'API v1.
Maggiori informazioni possono essere trovate su:
Prerequisiti
- Conoscenza di base dello sviluppo Java e Android
Cosa imparerai
- Passaggi dettagliati della configurazione lato client e server per abilitare l'invio di notifiche push alla tua app Android utilizzando l'API FCM HTTP v1
- Generazione di credenziali per l'API HTTP v1 utilizzando gli account di servizio
- Invio di messaggi di prova tramite l'API HTTP v1
Di cosa avrai bisogno
Ultima versione stabile di Android Studio
Uno dei seguenti dispositivi:
- Un dispositivo Android fisico collegato al tuo computer
- Un emulatore Android (vedi Eseguire app sull'emulatore Android )
Un ambiente di sviluppo Java o un editor di codice a tua scelta
2. Progetto Firebase e configurazione dell'app Android
Al termine del lab sul codice, sarai in grado di inviare messaggi alla tua app utilizzando Firebase Cloud Messaging. Prima di farlo, dovrai creare un progetto Firebase. Questo codelab fornisce anche un'app 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 Android
L'app Android di esempio fornita in questo codelab è già integrata con FCM. Dopo l'avvio, si registrerà con il server FCM e si iscriverà a un argomento. Nei passaggi successivi di questo codelab invierai un messaggio all'argomento e la tua app lo riceverà.
- Scarica l' esempio di avvio rapido di Firebase Android .
- Importa il progetto in https://github.com/firebase/quickstart-android/tree/master/messaging su 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 nella sezione "Passaggio 2: registra la tua app con Firebase ". - Segui la parte 1 del "Passaggio 3: aggiungi un file di configurazione Firebase " per scaricare
google-services.json
e aggiungerlo al tuo progetto. Costruisci ed esegui il progetto.
3. Configura il server dell'app
Ora che la tua app è configurata, dovrai scaricare un esempio di codice lato server per inviare messaggi alla tua app utilizzando l'API FCM v1. Questo codice carica le credenziali API (descritte nella sezione successiva) per generare un token di accesso. Quindi invia un messaggio alla tua app utilizzando la messaggistica degli argomenti FCM.
- Importa il codice del server iniziale scaricando il progetto Github . Il progetto "messaggistica" è un progetto Java basato su Gradle con una dipendenza dall'SDK firebase-admin , che fornisce funzionalità per inviare messaggi.
Maggiori dettagli su come un server app dovrebbe funzionare con FCM possono essere trovati nel documento Il tuo ambiente server e FCM .
4. Ottieni le credenziali v1
L'API HTTP v1 di FCM utilizza token di accesso di breve durata secondo il modello di sicurezza OAuth2. Rispetto alla chiave API statica utilizzata nell'API legacy FCM, il token di accesso di breve durata è meno soggetto al rischio di perdita di credenziali. Questa sezione descrive in dettaglio i passaggi per creare una credenziale per generare il token di accesso utilizzato nella chiamata all'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 nellamessaging/
percorso del progetto. - Il metodo
getAccessToken()
(mostrato di seguito) nella classeMessaging.java
genera un token OAuth2 valido per 1 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 per aggiungere la seguente riga:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Vai alla directory messaggistica/progetto nel tuo terminale e digita:
./gradlew run -Pmessage=common-message
per stampare il token OAuth2.
Maggiori informazioni sono disponibili in Autorizzare le richieste di invio .
5. Invia un messaggio con l'API REST
Ora sei pronto per inviare un messaggio tramite l'API HTTP v1. Seguire i passaggi seguenti:
- Per aggiungere il token di accesso a un'intestazione di richiesta HTTP:
- Aggiungere il token come valore dell'intestazione Autorizzazione 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 $topic_name
sopra può essere trovato nel codice dell'app Android menzionato nel progetto Firebase e nella configurazione dell'app Android. Per impostazione predefinita è "weather"
.
- Dopo che un messaggio è stato recapitato con successo, dovresti vedere una notifica pop-up sullo schermo, simile all'immagine qui sotto:
6. Conclusione
Congratulazioni! Hai completato con successo il codelab per:
- Configura un progetto Firebase
- Integra Firebase con un'app Android
- Crea credenziali per l'API HTTP v1 di FCM
- Invia un messaggio alla tua app tramite l'API FCM HTTP v1
Per esplorare le funzionalità avanzate offerte da FCM, sono utili i seguenti riferimenti: