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 generare il token di accesso per l'API FCM v1 sono molto diversi da quelli per l'API precedente.
Questo codelab ti guida nella procedura di configurazione lato client e server per attivare l'invio di notifiche push a un'app per Android utilizzando l'API FCM HTTP v1. Evidenzia il passaggio chiave della generazione delle credenziali per l'API v1.
Per ulteriori informazioni, visita:
Prerequisiti
- Conoscenza di base dello sviluppo Java e Android
Obiettivi didattici
- Passaggi dettagliati della configurazione lato client e server per attivare 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 i service account
- Invio di messaggi di test 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 sull'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 codelab, potrai inviare messaggi alla tua app utilizzando Firebase Cloud Messaging. Prima di farlo, devi creare un progetto Firebase. Questo codelab fornisce anche un'app per Android contenente codice di esempio per l'integrazione 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 per Android di esempio fornita in questo codelab è già integrata con FCM. Dopo l'avvio, si registra con il server FCM e si abbona a un argomento. Nei passaggi successivi di questo codelab invierai un messaggio all'argomento e la tua app lo riceverà.
- Scarica l'esempio di guida rapida di Firebase per Android.
- Importa il progetto in 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 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 progetto. Crea ed esegui il progetto.
3. Configurare il server delle app
Ora che la tua app è configurata, devi 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 per argomenti FCM.
- Importa il codice del server iniziale scaricando il progetto GitHub. Il progetto "messaging" è un progetto Java basato su Gradle con una dipendenza dall'SDK firebase-admin, che fornisce la funzionalità per inviare messaggi.
Per maggiori dettagli su come un server delle app deve funzionare con FCM, consulta il documento L'ambiente server e FCM.
4. Ottenere 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 legacy, il token di accesso di breve durata è meno soggetto al rischio di perdita delle credenziali. Questa sezione descrive in dettaglio i passaggi per creare una credenziale per generare il token di accesso utilizzato per chiamare l'API.
- Configura un service account Firebase per consentire all'SDK Firebase Admin di autorizzare le chiamate alle API FCM. Apri Impostazioni progetto nella console Firebase e seleziona la scheda Service account. 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 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(); }
- Modifica il metodo principale per aggiungere la seguente riga:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Vai alla directory di messaggistica/ progetto nel terminale e digita:
./gradlew run -Pmessage=common-message
per stampare il token OAuth2.
Per ulteriori informazioni, consulta la sezione Autorizzare le richieste di invio.
5. Inviare un messaggio con l'API REST
Ora puoi 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>
- Fai 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
riportato sopra è disponibile nel codice dell'app per Android menzionato nella configurazione del progetto Firebase e dell'app per Android. Il valore predefinito è "weather"
.
- Una volta consegnato correttamente un messaggio, sullo schermo dovrebbe essere visualizzata una notifica simile all'immagine riportata di seguito:
6. Conclusione
Complimenti! Hai completato correttamente il codelab per:
- Configura un progetto Firebase
- Integrare Firebase con un'app per Android
- Crea credenziali per l'API FCM HTTP v1
- 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: