Firebase Cloud Messaging

Firebase Cloud Messaging (FCM) è un servizio che facilita la messaggistica tra app per dispositivi mobili e applicazioni server. Questo articolo offre una panoramica del funzionamento di FCM e spiega come configurare Google Services in modo che l'app possa usare FCM.

Firebase Cloud Messaging hero image

Questo argomento offre una panoramica generale del modo in cui Firebase Cloud Messaging instrada i messaggi tra l'app Xamarin.Android e un server app e fornisce una procedura dettagliata per l'acquisizione delle credenziali in modo che l'app possa usare i servizi FCM.

Panoramica

Firebase Cloud Messaging (FCM) è un servizio multipiattaforma che gestisce l'invio, il routing e la coda di messaggi tra applicazioni server e app client per dispositivi mobili. FCM è il successore di Google Cloud Messaging (GCM) ed è basato su Google Play Services.

Come illustrato nel diagramma seguente, FCM funge da intermediario tra mittenti di messaggi e client. Un'app client è un'app abilitata per FCM eseguita in un dispositivo. Il server app (fornito dall'utente o dall'azienda) è il server abilitato per FCM con cui l'app client comunica tramite FCM. A differenza di GCM, FCM consente di inviare messaggi alle app client direttamente tramite l'interfaccia utente grafica delle notifiche della console firebase:

FCM sits between the client app and an app server

Con FCM, i server app possono inviare messaggi a un singolo dispositivo, a un gruppo di dispositivi o a diversi dispositivi sottoscritti a un argomento. Un'app client può usare FCM per sottoscrivere messaggi downstream da un server app, ad esempio per ricevere notifiche remote. Per altre informazioni sui diversi tipi di messaggi Firebase, vedere Informazioni sui messaggi FCM.

Firebase Cloud Messaging in azione

Quando un messaggio downstream viene inviato a un'app client da un server app, il server app invia il messaggio a un server di connessione FCM fornito da Google. Il server di connessione FCM, a sua volta, inoltra il messaggio a un dispositivo che esegue l'app client. I messaggi possono essere inviati tramite HTTP o XMPP (Extensible Messaging and Presence Protocol). Poiché le app client non sono sempre connesse o in esecuzione, il server di connessione FCM accoda e archivia i messaggi, inviandoli alle app client man mano che si riconnettono e diventano disponibili. Analogamente, FCM accoderà i messaggi upstream dall'app client al server app se il server app non è disponibile. Per altre informazioni sui server di connessione FCM, vedere Informazioni su Firebase Cloud Messaging Server.

FCM usa le credenziali seguenti per identificare il server app e l'app client e usa queste credenziali per autorizzare le transazioni dei messaggi tramite FCM:

  • ID mittente: l'ID mittente è un valore numerico univoco assegnato quando si crea il progetto Firebase. L'ID mittente viene usato per identificare ogni server app in grado di inviare messaggi all'app client. L'ID mittente è anche il numero del progetto; si ottiene l'ID mittente dalla console firebase quando si registra il progetto. Un esempio di ID mittente è 496915549731.

  • Chiave API: la chiave API consente al server app di accedere ai servizi Firebase; FCM usa questa chiave per autenticare il server app. Questa credenziale viene definita anche chiave server o chiave API Web. Un esempio di chiave API è AJzbSyCTcpfRT1YRqbz-jIwp1h06YdauvewGDzk.

  • ID app: identità dell'app client (indipendente da qualsiasi dispositivo specificato) che registra per ricevere messaggi da FCM. Un esempio di ID app è 1:415712510732:android:0e1eb7a661af2460.

  • Token di registrazione: il token di registrazione (detto anche ID istanza) è l'identità FCM dell'app client in un determinato dispositivo. Il token di registrazione viene generato in fase di esecuzione: l'app riceve un token di registrazione quando viene registrato per la prima volta con FCM durante l'esecuzione in un dispositivo. Il token di registrazione autorizza un'istanza dell'app client (in esecuzione in quel particolare dispositivo) a ricevere messaggi da FCM. Un esempio di token di registrazione è fkBQTHxKKhs:AP91bHuEedxM4xFAUn0z ... JKZS (stringa molto lunga).

La configurazione di Firebase Cloud Messaging (più avanti in questa guida) fornisce istruzioni dettagliate per la creazione di un progetto e la generazione di queste credenziali. Quando si crea un nuovo progetto nella console Firebase, viene creato un file di credenziali denominato google-services.json : aggiungere questo file al progetto Xamarin.Android come illustrato in Remote Notifications with FCM (Notifiche remote con FCM).

Le sezioni seguenti illustrano come queste credenziali vengono usate quando le app client comunicano con i server app tramite FCM.

Registrazione con FCM

Un'app client deve prima registrarsi con FCM prima che la messaggistica possa essere eseguita. L'app client deve completare i passaggi di registrazione illustrati nel diagramma seguente:

App registration steps diagram

  1. L'app client contatta FCM per ottenere un token di registrazione, passando l'ID mittente, la chiave API e l'ID app a FCM.

  2. FCM restituisce un token di registrazione all'app client.

  3. L'app client (facoltativamente) inoltra il token di registrazione al server app.

Il server app memorizza nella cache il token di registrazione per le comunicazioni successive con l'app client. Il server app può inviare un acknowledgement all'app client per indicare che il token di registrazione è stato ricevuto. Dopo aver eseguito l'handshake, l'app client può ricevere messaggi dal server app (o inviare messaggi a). L'app client può ricevere un nuovo token di registrazione se il token precedente è compromesso (vedere Notifiche remote con FCM per un esempio di come un'app riceve gli aggiornamenti del token di registrazione).

Quando l'app client non vuole più ricevere messaggi dal server app, può inviare una richiesta al server app per eliminare il token di registrazione. Se l'app client viene disinstallata da un dispositivo, FCM lo rileva e notifica automaticamente al server dell'app di eliminare il token di registrazione.

Messaggistica downstream

Il diagramma seguente illustra come Firebase Cloud Messaging archivia e inoltra i messaggi downstream:

FCM uses store and forward for downstream messaging

Quando il server app invia un messaggio downstream all'app client, usa i passaggi seguenti come enumerati nel diagramma precedente:

  1. Il server app invia il messaggio a FCM.

  2. Se il dispositivo client non è disponibile, il server FCM archivia il messaggio in una coda per una trasmissione successiva. I messaggi vengono conservati nell'archiviazione FCM per un massimo di 4 settimane .Per altre informazioni, vedere Impostazione della durata di un messaggio.

  3. Quando il dispositivo client è disponibile, FCM inoltra il messaggio all'app client nel dispositivo.

  4. L'app client riceve il messaggio da FCM, lo elabora e lo visualizza all'utente. Ad esempio, se il messaggio è una notifica remota, viene presentato all'utente nell'area di notifica.

In questo scenario di messaggistica (in cui il server app invia un messaggio a una singola app client), i messaggi possono avere una lunghezza massima di 4kB.

Per informazioni dettagliate sulla ricezione di messaggi FCM downstream in Android, vedere Remote Notifications with FCM (Notifiche remote con FCM).

Messaggistica degli argomenti

La messaggistica degli argomenti consente a un server app di inviare un messaggio a più dispositivi che hanno accodato esplicitamente a un argomento specifico. È anche possibile comporre e inviare messaggi di argomento tramite l'interfaccia utente grafica delle notifiche della console Firebase. FCM gestisce il routing e il recapito dei messaggi degli argomenti per i client sottoscritti. Questa funzionalità può essere usata per messaggi quali avvisi meteo, quotazioni azionarie e notizie sui titoli.

Topic messaging diagram

I passaggi seguenti vengono usati nella messaggistica dell'argomento (dopo che l'app client ottiene un token di registrazione come illustrato in precedenza):

  1. L'app client sottoscrive un argomento inviando un messaggio di sottoscrizione a FCM.

  2. Il server app invia messaggi di argomento a FCM per la distribuzione.

  3. FCM inoltra i messaggi degli argomenti ai client che hanno sottoscritto l'argomento.

Per altre informazioni sulla messaggistica degli argomenti di Firebase, vedere Messaggistica degli argomenti di Google in Android.

Configurazione di Firebase Cloud Messaging

Prima di poter usare i servizi FCM nell'app, è necessario creare un nuovo progetto (o importare un progetto esistente) tramite firebase Console. Usare la procedura seguente per creare un progetto Firebase Cloud Messaging per l'app:

  1. Accedi a Firebase Console con il tuo account Google (ad esempio, il tuo indirizzo Gmail) e fai clic su CREA NUOVO PROGETTO:

    Create New Project button

    Se si dispone di un progetto esistente, fare clic su Importa un progetto Google.

  2. Nella finestra di dialogo Crea un progetto immettere il nome del progetto e fare clic su CREA PROGETTO. Nell'esempio seguente viene creato un nuovo progetto denominato XamarinFCM :

    Create a Project dialog

  3. Nella panoramica di Firebase Console fare clic su Aggiungi Firebase all'app Android:

    Add Firebase to your Android app

  4. Nella schermata successiva immettere il nome del pacchetto dell'app. In questo esempio il nome del pacchetto è com.xamarin.fcmexample. Questo valore deve corrispondere al nome del pacchetto dell'app Android. Un nome alternativo dell'app può anche essere immesso nel campo Nome alternativo dell'app:

    Entering FCM Example as the app nickname

  5. Se l'app usa collegamenti dinamici, inviti o Google Auth, è necessario immettere anche il certificato di firma di debug. Per altre informazioni sull'individuazione del certificato di firma, vedere Ricerca della firma MD5 o SHA1 dell'archivio chiavi. In questo esempio il certificato di firma viene lasciato vuoto.

  6. Fare clic su AGGIUNGI APP:

    Clicking the Add App button

    Una chiave API server e un ID client vengono generati automaticamente per l'app. Queste informazioni vengono incluse in un file google-services.json scaricato automaticamente quando si fa clic su AGGIUNGI APP. Assicurarsi di salvare il file in un luogo sicuro.

Per un esempio dettagliato di come aggiungere google-services.json a un progetto di app per ricevere messaggi di notifica push FCM in Android, vedere Remote Notifications with FCM (Notifiche remote con FCM).

Per altre informazioni

  • Firebase Cloud Messaging di Google offre una panoramica delle funzionalità principali di Firebase Cloud Messaging, una spiegazione del funzionamento e le istruzioni di configurazione.

  • Le richieste di invio del server app di compilazione di Google spiegano come inviare messaggi con il server app.

  • RFC 6120 e RFC 6121 spiegano e definiscono il protocollo XMPP (Extensible Messaging and Presence Protocol).

  • Informazioni sui messaggi FCM descrive i diversi tipi di messaggi che possono essere inviati con Firebase Cloud Messaging.

Riepilogo

Questo articolo ha fornito una panoramica di Firebase Cloud Messaging (FCM). Sono state illustrate le varie credenziali usate per identificare e autorizzare la messaggistica tra server app e app client. Illustra gli scenari di registrazione e messaggistica downstream e illustra in dettaglio i passaggi per la registrazione dell'app con FCM per l'uso dei servizi FCM.