Google Cloud Messaging

Avviso

Google deprecato GCM a partire dal 10 aprile 2018. I documenti e i progetti di esempio seguenti potrebbero non essere più mantenuti. Le API client e server GCM di Google verranno rimosse non appena il 29 maggio 2019. Google consiglia di eseguire la migrazione di app GCM a Firebase Cloud Messaging (FCM). Per altre informazioni sulla deprecazione e la migrazione di GCM, vedere Google Depreated Cloud Messaging.

Per iniziare a usare Firebase Cloud Messaging con Xamarin, vedere Firebase Cloud Messaging.

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

Google Cloud Messaging logo

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

Panoramica

Google Cloud Messaging (GCM) è un servizio che gestisce l'invio, il routing e la coda di messaggi tra applicazioni server e app client per dispositivi mobili. Un'app client è un'app abilitata per GCM eseguita in un dispositivo. Il server app (fornito dall'utente o dall'azienda) è il server abilitato per GCM con cui l'app client comunica tramite GCM:

GCM resides between the client app and the app server

Usando GCM, i server app possono inviare messaggi a un singolo dispositivo, a un gruppo di dispositivi o a diversi dispositivi sottoscritti a un argomento. L'app client può usare GCM per sottoscrivere messaggi downstream da un server app, ad esempio per ricevere notifiche remote. GCM consente inoltre alle app client di inviare messaggi upstream al server app.

Google Cloud Messaging in azione

Quando i messaggi downstream vengono inviati da un server app a un'app client, il server app invia il messaggio a un server di connessione GCM. Il server di connessione GCM, 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 GCM accoda e archivia i messaggi, inviandoli alle app client durante la riconnessione e diventano disponibili. Analogamente, GCM accoderà i messaggi upstream dall'app client al server app se il server app non è disponibile.

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

  • Chiave API: la chiave API consente al server dell'app di accedere ai servizi Google; GCM usa questa chiave per autenticare il server app. Prima di poter usare il servizio GCM, è necessario ottenere una chiave API da Google Developer Console creando un progetto. La chiave API deve essere protetta; Per altre informazioni sulla protezione della chiave API, vedere Procedure consigliate per l'uso sicuro delle chiavi API.

  • ID mittente: l'IDmittente autorizza il server app all'app client, è un numero univoco che identifica il server app autorizzato a inviare messaggi all'app client. L'ID mittente è anche il numero del progetto; quando si registra il progetto, si ottiene l'ID mittente da Google Developers Console.

  • Token di registrazione: il token di registrazione è l'identità GCM 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 GCM 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 GCM.

  • ID applicazione: identità dell'app client (indipendente da qualsiasi dispositivo specificato) che registra per ricevere messaggi da GCM. In Android, l'ID applicazione è il nome del pacchetto registrato in AndroidManifest.xml, ad esempio com.xamarin.gcmexample.

La configurazione di Google Cloud Messaging (più avanti in questa guida) fornisce istruzioni dettagliate per la creazione di un progetto e la generazione di queste credenziali.

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

Registrazione con GCM

Un'app client installata in un dispositivo deve prima registrarsi con GCM prima di poter eseguire la messaggistica. L'app client deve completare i passaggi di registrazione illustrati nel diagramma seguente:

App registration steps

  1. L'app client contatta GCM per ottenere un token di registrazione, passando l'ID mittente a GCM.

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

  3. L'app client 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. Facoltativamente, 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).

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 riceve messaggi di argomento (spiegati più avanti in questo articolo), può annullare la sottoscrizione all'argomento. Se l'app client viene disinstallata da un dispositivo, GCM lo rileva e invia automaticamente una notifica al server dell'app per eliminare il token di registrazione.

Messaggistica downstream

Quando il server app invia un messaggio downstream all'app client, segue i passaggi illustrati nel diagramma seguente:

Downstream messaging store and forward diagram

  1. Il server app invia il messaggio a GCM.

  2. Se il dispositivo client non è disponibile, il server GCM archivia il messaggio in una coda per una trasmissione successiva.

  3. Quando il dispositivo client è disponibile, GCM invia il messaggio all'app client nel dispositivo.

  4. L'app client riceve il messaggio da GCM e lo gestisce di conseguenza. Ad esempio, se il messaggio è una notifica remota, viene presentato all'utente.

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 (inclusi esempi di codice) sulla ricezione di messaggi GCM downstream in Android, vedere Remote Notifications(Notifiche remote).

Messaggistica degli argomenti

La messaggistica degli argomenti è un tipo di messaggistica downstream in cui il server app invia un singolo messaggio a più dispositivi dell'app client che sottoscrivono un argomento ,ad esempio una previsione meteo. I messaggi degli argomenti possono avere una lunghezza massima di 2 KB e la messaggistica degli argomenti supporta fino a un milione di sottoscrizioni per ogni app. Se GCM viene usato solo per la messaggistica degli argomenti, l'app client non è necessaria per inviare un token di registrazione al server app.

Messaggistica di gruppo

La messaggistica di gruppo è un tipo di messaggistica downstream in cui il server app invia un singolo messaggio a più dispositivi dell'app client che appartengono a un gruppo, ad esempio un gruppo di dispositivi che appartengono a un singolo utente. I messaggi di gruppo possono avere una lunghezza massima di 2 KB per i dispositivi iOS e una lunghezza massima di 4 KB per i dispositivi Android. Un gruppo è limitato a un massimo di 20 membri.

Messaggistica upstream

Se l'app client si connette a un server che supporta XMPP, può inviare messaggi al server app, come illustrato nel diagramma seguente:

Upstream messaging diagram

  1. L'app client invia un messaggio al server di connessione XMPP GCM.

  2. Se il server app è disconnesso, il server GCM archivia il messaggio in una coda per l'inoltro successivo.

  3. Quando il server app viene riconnesso, GCM inoltra il messaggio al server app.

  4. Il server app analizza il messaggio per verificare l'identità dell'app client, quindi invia un "ack" a GCM per confermare la ricezione del messaggio.

  5. Il server app elabora il messaggio.

I messaggi upstream di Google spiegano come strutturare i messaggi con codifica JSON e inviarli ai server app che eseguono il server Cloud Connessione ion basato su Google.

Configurazione di Google Cloud Messaging

Prima di poter usare i servizi GCM nella tua app, devi prima acquisire le credenziali per l'accesso ai server GCM di Google. Le sezioni seguenti descrivono i passaggi necessari per completare questo processo:

Abilitare Google Services per l'app

  1. Accedi a Google Developers Console con il tuo account Google (ad esempio l'indirizzo gmail) e crea un nuovo progetto. Se si dispone di un progetto esistente, scegliere il progetto che si vuole abilitare per GCM. Nell'esempio seguente viene creato un nuovo progetto denominato XamarinGCM :

    Creating XamarinGCM project

  2. Immettere quindi il nome del pacchetto per l'app (in questo esempio il nome del pacchetto è com.xamarin.gcmexample) e fare clic su Continua per scegliere e configurare i servizi:

    Entering the package name

    Si noti che questo nome del pacchetto è anche l'ID applicazione per l'app.

  3. La sezione Scegliere e configurare i servizi elenca i servizi Google che è possibile aggiungere alla tua app. Fare clic su Messaggistica cloud:

    Choose Cloud Messaging

  4. Fare quindi clic su ABILITA GOOGLE CLOUD MESSAGING:

    Enable Google Cloud Messaging

  5. Per l'app vengono generati una chiave API server e un ID mittente. Registrare questi valori e fare clic su CLO edizione Standard:

    Server API Key and Sender ID displayed

    Proteggere la chiave API: non è destinata all'uso pubblico. Se la chiave API è compromessa, i server non autorizzati potrebbero pubblicare messaggi nelle applicazioni client. Le procedure consigliate per l'uso sicuro delle chiavi API forniscono linee guida utili per proteggere la chiave API.

Visualizzare il Impostazioni del progetto

È possibile visualizzare le impostazioni del progetto in qualsiasi momento accedendo a Google Cloud Console e selezionando il progetto. Ad esempio, è possibile visualizzare l'ID mittente selezionando il progetto nel menu a discesa nella parte superiore della pagina (in questo esempio il progetto è denominato XamarinGCM). L'ID mittente è il numero di progetto come illustrato in questo screenshot (l'ID mittente qui è 9349932736):

Viewing the Sender ID

Per visualizzare la chiave API, fare clic su Gestione API e quindi su Credenziali:

Viewing the API key

Ulteriori informazioni

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

Riepilogo

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