presentazione google cloud messanging
TRANSCRIPT
![Page 1: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/1.jpg)
Gabriele Baldoni
Email: [email protected]
Sitoweb: gabrielebaldoni.altervista.org
Altro:
facebook.com/gabriele.baldoni
twitter.com/_gabry
![Page 2: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/2.jpg)
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
![Page 3: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/3.jpg)
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
![Page 4: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/4.jpg)
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
![Page 5: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/5.jpg)
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.
![Page 6: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/6.jpg)
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)
![Page 7: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/7.jpg)
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
![Page 8: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/8.jpg)
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingChe tipi di messaggi posso mandare alle App
• Send-to-sync
• Messaggi con payload
![Page 9: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/9.jpg)
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Send-to-sync
• Leggeri
• Collassabil
i
![Page 10: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/10.jpg)
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Messaggi con payload
• Contengono dati (max 4Kb)
• Non collasabili
![Page 11: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/11.jpg)
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
![Page 12: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/12.jpg)
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
![Page 13: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/13.jpg)
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
![Page 14: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/14.jpg)
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
![Page 15: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/15.jpg)
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
![Page 16: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/16.jpg)
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
![Page 17: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/17.jpg)
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
Aggiungiamo al AndroidManifest.xml i permessi necessari per utilizzare il GCM
![Page 18: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/18.jpg)
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
… e aggiungiamo anche il Broadcast Receiver e l’IntentService
![Page 19: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/19.jpg)
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
… è bene controllare se il dispositivo ha i Google Play Services installati
![Page 20: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/20.jpg)
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
… se presenti si può procedere con la registrazione
![Page 21: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/21.jpg)
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
… implementiamo il BroadcastReceiver
![Page 22: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/22.jpg)
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
… e infine l’IntentService
![Page 23: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/23.jpg)
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingClient Android
![Page 24: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/24.jpg)
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
![Page 25: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/25.jpg)
http://distriqt.com/post/1273
Google Cloud MessagingServer HTTP
Questa semplice funzione PHP si occupa di mandare le richieste ai server GCM
![Page 26: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/26.jpg)
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
![Page 27: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/27.jpg)
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
![Page 28: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/28.jpg)
http://developer.android.com/google/gcm/index.html
Google Cloud MessagingServer HTTP
analizziamo nel dettaglio il campo results
• message_id
• error
• registration_id
![Page 29: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/29.jpg)
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
![Page 30: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/30.jpg)
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
![Page 31: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/31.jpg)
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Question Time
![Page 32: Presentazione Google Cloud Messanging](https://reader034.vdocuments.mx/reader034/viewer/2022051016/55a7cabf1a28abcf688b4950/html5/thumbnails/32.jpg)
Grazie per l’attenzione
Email: [email protected]
Sitoweb: gabrielebaldoni.altervista.org
Altro:
facebook.com/gabriele.baldoni
twitter.com/_gabry
Gabriele Baldoni