Presentazione Google Cloud Messanging
-
Upload
gabriele-baldoni -
Category
Software
-
view
68 -
download
0
Transcript of Presentazione Google Cloud Messanging
Gabriele Baldoni
Email: [email protected]
Sitoweb: gabrielebaldoni.altervista.org
Altro:
facebook.com/gabriele.baldoni
twitter.com/_gabry
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Cos’è il Google Cloud Messaging?
E’ un servizio gratuito di Google che consente agli sviluppatori Android di inviare messaggi
alle App installate sui device degli utenti
E’ una miglioria del “vecchio” Cloud-to-Device Messaging
http://developer.android.com/google/gcm/c2dm.html
GCM vs C2DMAbbiamo detto che il Google Cloud Messaging(GCM) è una miglioria del C2DM, ma quali sono le differenze?
• Messaggi multicast
• Messaggi con payload
• Supporto JSON
• Nuove API
• Migliore gestione della batteria
• Più facile da usare
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingCome funziona?
Il nostro server
Invia Invia
Invia una richiesta
al server GCM
Il quale recapita
Il messaggio
Al device Android
Quindi l’architettura del GCM è composta da 3 parti.
1)Il nostro server
2)Il server GCM
3) Il device Android
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingQuali dispositivi sono compatibili?
Il GCM è compatibile con tutti i dispositivi Android a partire dalla versione 2.2(Froyo)
L’unica limitazione è la presenza nel device dei Google Play Services.
Inoltre per le versioni precedenti la 3.0 (Honeycomb)
è necessaria la presenza di un account Google configurato nel terminale.
Da Android 4.0.4 (Icescream Sandwich) questa limitazione è stata rimossa.
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingCome si interagisce con i server Google che gestiscono il GCM
• XMPP (Jabber)
• HTTP Mediante PlainText oppure JSON (tratteremo questa implementazione)
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingVediamo adesso alcuni concetti chiave che stanno alla base del GCM
• Sender ID
• Application ID
• Registration ID
• Sender Auth Token
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingChe tipi di messaggi posso mandare alle App
• Send-to-sync
• Messaggi con payload
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Send-to-sync
• Leggeri
• Collassabil
i
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Messaggi con payload
• Contengono dati (max 4Kb)
• Non collasabili
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingCome fare ad usare il GCM
Registrarsi sulla Google Developer Console (https://console.developers.google.com),
creare un nuovo progetto
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingCome fare ad usare il GCM
Salvarsi il Project Number, in quanto sarà il Sender ID da usare durante la registrazione dell’App
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingCome fare ad usare il GCM
Attivare dal menù API & auth il Google Cloud Messaging for Android
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingCome fare ad usare il GCM
Dal menù credentials creare una nuova Public Key API Access di tipo Server Key
Questa sarà la nostra Sender Auth Token
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingCome fare ad usare il GCM
Adesso è possibile implementare il Client e il Server
Vedremo come implementare la registrazione del Client
E una semplicissima funzione PHP che funge da server
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
Partiamo dall’implementazione del client
Dobbiamo essere sicuri di aver installato i Google Play Services nel nostro
ambiente di sviluppo
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
Aggiungiamo al AndroidManifest.xml i permessi necessari per utilizzare il GCM
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
… e aggiungiamo anche il Broadcast Receiver e l’IntentService
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
… è bene controllare se il dispositivo ha i Google Play Services installati
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
… se presenti si può procedere con la registrazione
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
… implementiamo il BroadcastReceiver
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
… e infine l’IntentService
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingServer HTTP
Adesso tocca al server, qui vedremo una implementazione (brutta e probabilmente
piena di bug) che ci mostra come comunicare semplicemente usando il PHP e un
JSON con i server Google che gestiscono il GCM
http://distriqt.com/post/1273
Google Cloud MessagingServer HTTP
Questa semplice funzione PHP si occupa di mandare le richieste ai server GCM
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingServer HTTP
Vediamo quali sono i parametri che possiamo passare ai server GCM
• registration_ids
• notification_key
• collapse_key
• data
• delay_while_idl
e
• time_to_live
• dry_run
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingServer HTTP
vediamo una tipica risposta dai server GCM e analizziamola
• multicast_id
• success
• failure
• canonical_ids
• results
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingServer HTTP
analizziamo nel dettaglio il campo results
• message_id
• error
• registration_id
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingArgomenti ‘avanzati’
Analizziamo alcuni argomenti utili per l’utilizzo del GCM
Se la registrazione non va a buon fine, deve essere ripetuta aspettando dopo ogni tentativo
un tempo doppio rispetto a quello di attesa del precedente (Exponential Back-Off)
La de registrazione di un registration_id deve essere fatta solo in casi di aggiornamento
dell’App o disinstallazione, poiché non vi è alcuna garanzia che i server GCM restituiscano un
registration_id diverso dal precedente
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingArgomenti ‘avanzati’
Come funziona la de registrazione
• L’utente disinstalla l’App
• Il nostro server manda un messaggio all’App
• Il GCM manda il messaggio al device
• Il Client GCM del device controlla se c’è un BroadcastReceiver adatto per il messaggio e non lo trova
• Il Client GCM del device informa i server GCM che l’App è stata disinstallata
• Il GCM contrassegna quel registration_id per la cancellazione
• Il nostro server manda un nuovo messaggio
• Il server GCM ci ritorna in error un NotRegistered
• Il nostro server DEVE cancellare quel registration_id
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Question Time
Grazie per l’attenzione
Email: [email protected]
Sitoweb: gabrielebaldoni.altervista.org
Altro:
facebook.com/gabriele.baldoni
twitter.com/_gabry
Gabriele Baldoni