Presentazione Google Cloud Messanging

32
Gabriele Baldoni Email: [email protected] Sitoweb: gabrielebaldoni.altervista.org Altro: facebook.com/gabriele.baldoni twitter.com/_gabry

Transcript of Presentazione Google Cloud Messanging

Page 1: Presentazione Google Cloud Messanging

Gabriele Baldoni

Email: [email protected]

Sitoweb: gabrielebaldoni.altervista.org

Altro:

facebook.com/gabriele.baldoni

twitter.com/_gabry

Page 2: Presentazione Google Cloud Messanging

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

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

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

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

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

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

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

http://developer.android.com/google/gcm/index.html

Google Cloud Messaging

Send-to-sync

• Leggeri

• Collassabil

i

Page 10: Presentazione Google Cloud Messanging

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

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

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

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

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

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

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

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

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

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

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

http://developer.android.com/google/gcm/index.html

Google Cloud MessagingClient Android

… implementiamo il BroadcastReceiver

Page 22: Presentazione Google Cloud Messanging

http://developer.android.com/google/gcm/index.html

Google Cloud MessagingClient Android

… e infine l’IntentService

Page 23: Presentazione Google Cloud Messanging

http://developer.android.com/google/gcm/index.html

Google Cloud MessagingClient Android

Page 24: Presentazione Google Cloud Messanging

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

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

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

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

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

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

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

http://developer.android.com/google/gcm/index.html

Google Cloud Messaging

Question Time

Page 32: Presentazione Google Cloud Messanging

Grazie per l’attenzione

Email: [email protected]

Sitoweb: gabrielebaldoni.altervista.org

Altro:

facebook.com/gabriele.baldoni

twitter.com/_gabry

Gabriele Baldoni