SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Gabriele Baldoni
Email: gabriele.baldoni@gmail.com
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 C2DM
Abbiamo 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 Messaging
Come 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 Messaging
Quali 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 Messaging
Come 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 Messaging
Vediamo 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 Messaging
Che 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 Messaging
Come 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 Messaging
Come 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 Messaging
Come 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 Messaging
Come 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 Messaging
Come 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 Messaging
Client 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 Messaging
Client Android
Aggiungiamo al AndroidManifest.xml i permessi necessari per utilizzare il GCM
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Client Android
… e aggiungiamo anche il Broadcast Receiver e l’IntentService
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Client Android
… è bene controllare se il dispositivo ha i Google Play Services installati
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Client Android
… se presenti si può procedere con la registrazione
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Client Android
… implementiamo il BroadcastReceiver
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Client Android
… e infine l’IntentService
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Client Android
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Server 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 Messaging
Server HTTP
Questa semplice funzione PHP si occupa di mandare le richieste ai server GCM
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Server 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 Messaging
Server 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 Messaging
Server HTTP
analizziamo nel dettaglio il campo results
• message_id
• error
• registration_id
http://developer.android.com/google/gcm/index.html
Google Cloud Messaging
Argomenti ‘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 Messaging
Argomenti ‘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: gabriele.baldoni@gmail.com
Sitoweb: gabrielebaldoni.altervista.org
Altro:
facebook.com/gabriele.baldoni
twitter.com/_gabry
Gabriele Baldoni

Weitere ähnliche Inhalte

Ähnlich wie Presentazione Google Cloud Messanging

Hybrid development using Qt webkit
Hybrid development using Qt webkitHybrid development using Qt webkit
Hybrid development using Qt webkitDeveler S.r.l.
 
Con Aruba, a lezione di cloud #lezione 28 - parte 2: Cloud Server Smart, come...
Con Aruba, a lezione di cloud #lezione 28 - parte 2: Cloud Server Smart, come...Con Aruba, a lezione di cloud #lezione 28 - parte 2: Cloud Server Smart, come...
Con Aruba, a lezione di cloud #lezione 28 - parte 2: Cloud Server Smart, come...Aruba S.p.A.
 
Cloud computing (Andrea Cavicchini)
Cloud computing (Andrea Cavicchini)Cloud computing (Andrea Cavicchini)
Cloud computing (Andrea Cavicchini)Andrea Cavicchini
 
Con Aruba, a lezione di cloud #lezione 14 - parte 1: Cloud Monitoring, un uti...
Con Aruba, a lezione di cloud #lezione 14 - parte 1: Cloud Monitoring, un uti...Con Aruba, a lezione di cloud #lezione 14 - parte 1: Cloud Monitoring, un uti...
Con Aruba, a lezione di cloud #lezione 14 - parte 1: Cloud Monitoring, un uti...Aruba S.p.A.
 
comm-09 Cloud Computing
comm-09 Cloud  Computingcomm-09 Cloud  Computing
comm-09 Cloud Computingmcolavit
 
Firenze Gtug Kick Off QP
Firenze Gtug Kick Off QPFirenze Gtug Kick Off QP
Firenze Gtug Kick Off QPfirenze-gtug
 
Con Aruba, a lezione di cloud #lezione 4 - Parte 1: 'Cloud Monitoring, come t...
Con Aruba, a lezione di cloud #lezione 4 - Parte 1: 'Cloud Monitoring, come t...Con Aruba, a lezione di cloud #lezione 4 - Parte 1: 'Cloud Monitoring, come t...
Con Aruba, a lezione di cloud #lezione 4 - Parte 1: 'Cloud Monitoring, come t...Aruba S.p.A.
 
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web AppTech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web AppCodemotion
 
Quali vantaggi da un software gestionale Cloud
Quali vantaggi da un software gestionale Cloud Quali vantaggi da un software gestionale Cloud
Quali vantaggi da un software gestionale Cloud NetToHotel
 
Smau Padova 2015 - Telecom Italia Digital Solutions
Smau Padova 2015 - Telecom Italia Digital SolutionsSmau Padova 2015 - Telecom Italia Digital Solutions
Smau Padova 2015 - Telecom Italia Digital SolutionsSMAU
 
Con Aruba, a lezione di cloud #lezione 23 - parte 1: Cloud Storage, una soluz...
Con Aruba, a lezione di cloud #lezione 23 - parte 1: Cloud Storage, una soluz...Con Aruba, a lezione di cloud #lezione 23 - parte 1: Cloud Storage, una soluz...
Con Aruba, a lezione di cloud #lezione 23 - parte 1: Cloud Storage, una soluz...Aruba S.p.A.
 
Smau Bologna 2015 - Telecom Italia Digital Solutions
Smau Bologna 2015 - Telecom Italia Digital SolutionsSmau Bologna 2015 - Telecom Italia Digital Solutions
Smau Bologna 2015 - Telecom Italia Digital SolutionsSMAU
 
IBM Bluemix @Codemotion
IBM Bluemix @CodemotionIBM Bluemix @Codemotion
IBM Bluemix @CodemotionRoberto Pozzi
 
Come affrontare la sfida del Cloud Computing
Come affrontare la sfida del Cloud ComputingCome affrontare la sfida del Cloud Computing
Come affrontare la sfida del Cloud ComputingInnocenti Andrea
 
Smau Firenze 2015 - Telecom Italia Digital Solutions
Smau Firenze 2015 - Telecom Italia Digital SolutionsSmau Firenze 2015 - Telecom Italia Digital Solutions
Smau Firenze 2015 - Telecom Italia Digital SolutionsSMAU
 
Sviluppo software - Il contract design
Sviluppo software - Il contract designSviluppo software - Il contract design
Sviluppo software - Il contract designCarlo Ticozzi
 
Smau padova 2013 stefano dindo
Smau padova 2013 stefano dindoSmau padova 2013 stefano dindo
Smau padova 2013 stefano dindoSMAU
 

Ähnlich wie Presentazione Google Cloud Messanging (20)

Hybrid development using Qt webkit
Hybrid development using Qt webkitHybrid development using Qt webkit
Hybrid development using Qt webkit
 
Con Aruba, a lezione di cloud #lezione 28 - parte 2: Cloud Server Smart, come...
Con Aruba, a lezione di cloud #lezione 28 - parte 2: Cloud Server Smart, come...Con Aruba, a lezione di cloud #lezione 28 - parte 2: Cloud Server Smart, come...
Con Aruba, a lezione di cloud #lezione 28 - parte 2: Cloud Server Smart, come...
 
Cloud computing (Andrea Cavicchini)
Cloud computing (Andrea Cavicchini)Cloud computing (Andrea Cavicchini)
Cloud computing (Andrea Cavicchini)
 
Con Aruba, a lezione di cloud #lezione 14 - parte 1: Cloud Monitoring, un uti...
Con Aruba, a lezione di cloud #lezione 14 - parte 1: Cloud Monitoring, un uti...Con Aruba, a lezione di cloud #lezione 14 - parte 1: Cloud Monitoring, un uti...
Con Aruba, a lezione di cloud #lezione 14 - parte 1: Cloud Monitoring, un uti...
 
comm-09 Cloud Computing
comm-09 Cloud  Computingcomm-09 Cloud  Computing
comm-09 Cloud Computing
 
Firenze Gtug Kick Off QP
Firenze Gtug Kick Off QPFirenze Gtug Kick Off QP
Firenze Gtug Kick Off QP
 
Spring e Flex
Spring e FlexSpring e Flex
Spring e Flex
 
Con Aruba, a lezione di cloud #lezione 4 - Parte 1: 'Cloud Monitoring, come t...
Con Aruba, a lezione di cloud #lezione 4 - Parte 1: 'Cloud Monitoring, come t...Con Aruba, a lezione di cloud #lezione 4 - Parte 1: 'Cloud Monitoring, come t...
Con Aruba, a lezione di cloud #lezione 4 - Parte 1: 'Cloud Monitoring, come t...
 
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web AppTech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
Tech Webinar: Come ottimizzare il workflow nello sviluppo di Web App
 
Quali vantaggi da un software gestionale Cloud
Quali vantaggi da un software gestionale Cloud Quali vantaggi da un software gestionale Cloud
Quali vantaggi da un software gestionale Cloud
 
Smau Padova 2015 - Telecom Italia Digital Solutions
Smau Padova 2015 - Telecom Italia Digital SolutionsSmau Padova 2015 - Telecom Italia Digital Solutions
Smau Padova 2015 - Telecom Italia Digital Solutions
 
Con Aruba, a lezione di cloud #lezione 23 - parte 1: Cloud Storage, una soluz...
Con Aruba, a lezione di cloud #lezione 23 - parte 1: Cloud Storage, una soluz...Con Aruba, a lezione di cloud #lezione 23 - parte 1: Cloud Storage, una soluz...
Con Aruba, a lezione di cloud #lezione 23 - parte 1: Cloud Storage, una soluz...
 
Smau Bologna 2015 - Telecom Italia Digital Solutions
Smau Bologna 2015 - Telecom Italia Digital SolutionsSmau Bologna 2015 - Telecom Italia Digital Solutions
Smau Bologna 2015 - Telecom Italia Digital Solutions
 
IBM Bluemix @Codemotion
IBM Bluemix @CodemotionIBM Bluemix @Codemotion
IBM Bluemix @Codemotion
 
Geodrop
GeodropGeodrop
Geodrop
 
Come affrontare la sfida del Cloud Computing
Come affrontare la sfida del Cloud ComputingCome affrontare la sfida del Cloud Computing
Come affrontare la sfida del Cloud Computing
 
Smau Firenze 2015 - Telecom Italia Digital Solutions
Smau Firenze 2015 - Telecom Italia Digital SolutionsSmau Firenze 2015 - Telecom Italia Digital Solutions
Smau Firenze 2015 - Telecom Italia Digital Solutions
 
Sviluppo software - Il contract design
Sviluppo software - Il contract designSviluppo software - Il contract design
Sviluppo software - Il contract design
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Smau padova 2013 stefano dindo
Smau padova 2013 stefano dindoSmau padova 2013 stefano dindo
Smau padova 2013 stefano dindo
 

Mehr von Gabriele Baldoni

Fog computing with Eclipse fog05
Fog computing with Eclipse fog05Fog computing with Eclipse fog05
Fog computing with Eclipse fog05Gabriele Baldoni
 
Eclipse fog05 Paper presenation at CIoT 2018
Eclipse fog05 Paper presenation at CIoT 2018Eclipse fog05 Paper presenation at CIoT 2018
Eclipse fog05 Paper presenation at CIoT 2018Gabriele Baldoni
 
Microservices power by unikernels
Microservices power by unikernelsMicroservices power by unikernels
Microservices power by unikernelsGabriele Baldoni
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloudGabriele Baldoni
 

Mehr von Gabriele Baldoni (8)

Fog computing with Eclipse fog05
Fog computing with Eclipse fog05Fog computing with Eclipse fog05
Fog computing with Eclipse fog05
 
Eclipse fog05 Paper presenation at CIoT 2018
Eclipse fog05 Paper presenation at CIoT 2018Eclipse fog05 Paper presenation at CIoT 2018
Eclipse fog05 Paper presenation at CIoT 2018
 
Microservices power by unikernels
Microservices power by unikernelsMicroservices power by unikernels
Microservices power by unikernels
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloud
 
SDN Cosa è?
SDN Cosa è?SDN Cosa è?
SDN Cosa è?
 
Golang + AngulaJS on GCP
Golang + AngulaJS on GCPGolang + AngulaJS on GCP
Golang + AngulaJS on GCP
 
Golang Introduzione
Golang IntroduzioneGolang Introduzione
Golang Introduzione
 
Go on AppEngine
Go on AppEngineGo on AppEngine
Go on AppEngine
 

Presentazione Google Cloud Messanging