際際滷

際際滷Share a Scribd company logo
ROME 11-12 april 2014ROME 11-12 april 2014
Android & Internet of Things with Google
Cloud Messaging and AppEngine
GDG Roma L-AB
Antonino Orlando
Simone Pulcini e il GDG Roma L-AB
ROME 11-12 april 2014
Chi siamo: GDG Roma L-AB
http://goo.gl/QG40Os http://goo.gl/6QRlP9
http://goo.gl/cEF2Yn
Il nostro prossimo evento:
ROME 11-12 april 2014
 orlando.antonino@gmail.com
 http://it.linkedin.com/in/orlan
doantonino
 https://plus.google.com/+Anto
ninoOrlando
Chi siamo: Antonino Orlando
ROME 11-12 april 2014
 simone.pulcini@gmail.com
 http://www.linkedin.com/i
n/simonepulcini
 https://plus.google.com/+S
imonePulcini
Chi siamo: Simone Pulcini
ROME 11-12 april 2014
NFC
 RFID (Radio Frequency Identification)
 permette una comunicazione bidirezionale:
entro un raggio di 4 cm
 opera alla frequenza di 13,56 MHz e pu嘆
raggiungere una velocit di trasmissione
massima di 424 kbit/s.
ROME 11-12 april 2014
Google Cloud Messaging
1) Invio un messaggio a gcm
2) GCM inoltre al device
ROME 11-12 april 2014
Workflow del lab
1) Il dispositivo rileva un tag
2) il dispositivo notifica l'evento
al nostro backend
3) il backend chiede l'invio della
notifica a GCM
4) GCM inoltra la notifica
all'utente
ROME 11-12 april 2014
Stack software e sorgenti
 ADT Bundle pi湛 Plug-in Eclipse per GAE
 Google Play Services (da Android SDK Extras)
 Android Support Library (da Android SDK
Extras)
 github.com/orlando-antonino/GdGLAb_IoT-
AppEngine_TODO.git
 github.com/orlando-antonino/SendByNFC.git
 github.com/spulci/codemotion2014/tree/master/Co
demotionIOTLabBackend
ROME 11-12 april 2014
 All'interno del progetto
possiamo trovare i passi di
sviluppo usando la view
tasks di eclipse
 Abbiamo un tempo definito
per eseguire ogni todo
 siamo qui per sviluppare
insieme... fate domande
Lab How-to
ROME 11-12 april 2014
 Richiamiamo il metodo
all'interno dell'activity per
richiedere un
registrationID al server
GCM
 http://developer.android.com/
reference/com/google/androi
d/gms/gcm/GoogleCloudMess
aging.html
Step 1: registration ID
ROME 11-12 april 2014
 Inseriamo nelle S.P.:
1. property_reg_id
2. property_app_version
 recuperiamo dalle S.P. il
registrationID memorizzato
precedentemente:
1. property_reg_id
http://developer.android.com/referen
ce/android/content/SharedPreferenc
es.html
Step 2: Shared Preferences
ROME 11-12 april 2014
 inseriamo il codice necessario a
richiedere il registrationID al GCM
server
 richiamiamo il metodo all'interno
dell'activity per memorizzare
localmente il registrationID
 inviamo il registrationID al
backend AppEngine
http://developer.android.com/reference/co
m/google/android/gms/gcm/GoogleCloudM
essaging.html
Step 3: GCM
ROME 11-12 april 2014
 Entity: lightweight
persistence domain object
 Annotazioni JPA usate:
@Entity, @Id,
@GeneratedValue
 https://developers.google.com/a
ppengine/docs/java/datastore/jp
a/overview-dn2?hl=it
Step 4: creazione di un Entity Bean
ROME 11-12 april 2014
 Pattern DAO
 Diversi servizi gi realizzati
 Il servizio da realizzare rende
persistente un ClientBean
 https://developers.google.co
m/appengine/docs/java/data
store/jpa/overview-dn2?hl=it
Step 5: servizio addClientBean
ROME 11-12 april 2014
 Esponiamo un servizio sul
web in modo da poterlo
chiamare da remoto (dal
client android)
 Annotazioni: @Api,
@ApiMethod (con attributi)
 https://developers.google.co
m/appengine/docs/java/endp
oints/
Step 6: creazione Cloud Endpoint
ROME 11-12 april 2014
 Radice progetto (tasto
destro): Google -> Generate
Cloud Endpoint Client
Library
 Innestiamo il codice nel
client Android sistemando i
jar generati e chiamando le
API (lo abbiamo fatto noi
per voi)
Step 7: generiamo e integriamo (1/2)
ROME 11-12 april 2014
Step 7: generiamo e integriamo (2/2)
 riempiamo la segnatura remota per l'operazione
addclient che prende un ClientBean popolato dal suo
registrationId e lo memorizza sul datastore
invocando il metodo remoto
 lanciamo l'operazione remota di cui abbiamo
preparato la segnatura di cui sopra: viene aperta una
connessione HTTP e viene effettuata la chiamata
ROME 11-12 april 2014
E per finire.GCM server side
 GCM pu嘆 essere interrogato via HTTP o XMPP
 Lato server in HTTP abbiamo usato
limplementazione del progetto
http://code.google.com/p/gcm/source/brows
e/#git%2Fgcm-server
 I formati della message request e altra
documentazione:
https://developer.android.com/google/gcm/ht
tp.html
ROME 11-12 april 2014
GRAZIE A TUTTI!

More Related Content

Codemotion Rome 2014: Codelab "Android & Internet of Things with Google Cloud Messaging and AppEngine"

  • 1. ROME 11-12 april 2014ROME 11-12 april 2014 Android & Internet of Things with Google Cloud Messaging and AppEngine GDG Roma L-AB Antonino Orlando Simone Pulcini e il GDG Roma L-AB
  • 2. ROME 11-12 april 2014 Chi siamo: GDG Roma L-AB http://goo.gl/QG40Os http://goo.gl/6QRlP9 http://goo.gl/cEF2Yn Il nostro prossimo evento:
  • 3. ROME 11-12 april 2014 orlando.antonino@gmail.com http://it.linkedin.com/in/orlan doantonino https://plus.google.com/+Anto ninoOrlando Chi siamo: Antonino Orlando
  • 4. ROME 11-12 april 2014 simone.pulcini@gmail.com http://www.linkedin.com/i n/simonepulcini https://plus.google.com/+S imonePulcini Chi siamo: Simone Pulcini
  • 5. ROME 11-12 april 2014 NFC RFID (Radio Frequency Identification) permette una comunicazione bidirezionale: entro un raggio di 4 cm opera alla frequenza di 13,56 MHz e pu嘆 raggiungere una velocit di trasmissione massima di 424 kbit/s.
  • 6. ROME 11-12 april 2014 Google Cloud Messaging 1) Invio un messaggio a gcm 2) GCM inoltre al device
  • 7. ROME 11-12 april 2014 Workflow del lab 1) Il dispositivo rileva un tag 2) il dispositivo notifica l'evento al nostro backend 3) il backend chiede l'invio della notifica a GCM 4) GCM inoltra la notifica all'utente
  • 8. ROME 11-12 april 2014 Stack software e sorgenti ADT Bundle pi湛 Plug-in Eclipse per GAE Google Play Services (da Android SDK Extras) Android Support Library (da Android SDK Extras) github.com/orlando-antonino/GdGLAb_IoT- AppEngine_TODO.git github.com/orlando-antonino/SendByNFC.git github.com/spulci/codemotion2014/tree/master/Co demotionIOTLabBackend
  • 9. ROME 11-12 april 2014 All'interno del progetto possiamo trovare i passi di sviluppo usando la view tasks di eclipse Abbiamo un tempo definito per eseguire ogni todo siamo qui per sviluppare insieme... fate domande Lab How-to
  • 10. ROME 11-12 april 2014 Richiamiamo il metodo all'interno dell'activity per richiedere un registrationID al server GCM http://developer.android.com/ reference/com/google/androi d/gms/gcm/GoogleCloudMess aging.html Step 1: registration ID
  • 11. ROME 11-12 april 2014 Inseriamo nelle S.P.: 1. property_reg_id 2. property_app_version recuperiamo dalle S.P. il registrationID memorizzato precedentemente: 1. property_reg_id http://developer.android.com/referen ce/android/content/SharedPreferenc es.html Step 2: Shared Preferences
  • 12. ROME 11-12 april 2014 inseriamo il codice necessario a richiedere il registrationID al GCM server richiamiamo il metodo all'interno dell'activity per memorizzare localmente il registrationID inviamo il registrationID al backend AppEngine http://developer.android.com/reference/co m/google/android/gms/gcm/GoogleCloudM essaging.html Step 3: GCM
  • 13. ROME 11-12 april 2014 Entity: lightweight persistence domain object Annotazioni JPA usate: @Entity, @Id, @GeneratedValue https://developers.google.com/a ppengine/docs/java/datastore/jp a/overview-dn2?hl=it Step 4: creazione di un Entity Bean
  • 14. ROME 11-12 april 2014 Pattern DAO Diversi servizi gi realizzati Il servizio da realizzare rende persistente un ClientBean https://developers.google.co m/appengine/docs/java/data store/jpa/overview-dn2?hl=it Step 5: servizio addClientBean
  • 15. ROME 11-12 april 2014 Esponiamo un servizio sul web in modo da poterlo chiamare da remoto (dal client android) Annotazioni: @Api, @ApiMethod (con attributi) https://developers.google.co m/appengine/docs/java/endp oints/ Step 6: creazione Cloud Endpoint
  • 16. ROME 11-12 april 2014 Radice progetto (tasto destro): Google -> Generate Cloud Endpoint Client Library Innestiamo il codice nel client Android sistemando i jar generati e chiamando le API (lo abbiamo fatto noi per voi) Step 7: generiamo e integriamo (1/2)
  • 17. ROME 11-12 april 2014 Step 7: generiamo e integriamo (2/2) riempiamo la segnatura remota per l'operazione addclient che prende un ClientBean popolato dal suo registrationId e lo memorizza sul datastore invocando il metodo remoto lanciamo l'operazione remota di cui abbiamo preparato la segnatura di cui sopra: viene aperta una connessione HTTP e viene effettuata la chiamata
  • 18. ROME 11-12 april 2014 E per finire.GCM server side GCM pu嘆 essere interrogato via HTTP o XMPP Lato server in HTTP abbiamo usato limplementazione del progetto http://code.google.com/p/gcm/source/brows e/#git%2Fgcm-server I formati della message request e altra documentazione: https://developer.android.com/google/gcm/ht tp.html
  • 19. ROME 11-12 april 2014 GRAZIE A TUTTI!