Presentazione Google Cloud Messanging

Post on 16-Jul-2015

66 views 0 download

transcript

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 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: gabriele.baldoni@gmail.com

Sitoweb: gabrielebaldoni.altervista.org

Altro:

facebook.com/gabriele.baldoni

twitter.com/_gabry

Gabriele Baldoni