Nel provare a utilizzare App Inventor
, lo strumento di sviluppo visuale per Android realizzato dal MIT, è sorta l'esigenza di poter recuperare dati dalla rete attraverso un servizio, quindi di dover costruire una REST API. Esiste più di un modo per poter far questo lato client con App Inventor, adesso si esplorerà una modalità nativa che offre degli strumenti preimpostati, ma che mi è sembrata interessante perchè usa un po' di tecnologie e permette di lavorare nel cloud attraverso un web service.
App Inventor tra i suoi componenti ne ha uno chiamato TinyDB, che come suggerisce il nome serve a memorizzare dati in un DB in stile NoSQL che poi rimangono sul telefono. Se si vuole ottenere lo stesso effetto ma salvare i dati nella rete si può usare il componente TinyWebDB, solo che bisogna avere un servizio con cui parlare per poter salvare i dati e recuperarli.
Vediamo come mettere in piedi un servizio del genere utilizzando un "template" già presente sul sito del MIT e l'App Engine di Google, inoltre verrà usato Cloud9 come server per ospitare l'App Engine, che quindi non verrà usato nel cloud di Google.
wget https://storage.googleapis.com/appengine-sdks/featured/google_appengine_1.9.32.zip
e estrarlo
unzip google_appengine_1.9.32.zip
In questo modo si creerà la cartella google_appengine sul proprio server virtuale.
wget http://appinventor.mit.edu/explore/sites/all/files/tinywebdb/customtinywebdb.zip
e anche in questo caso va estratta nella propria root
unzip customtinywebdb.zip
Questa cartella contiene una piccola applicazione Django che permetterà di gestire il database che si trova sul proprio server virtuale tramite chiamate remoto dal proprio dispositivo.
./dev_appserver.py --host=0.0.0.0 --port=8080 ../appinventordb/
e il servizio verrà lanciato in esecuzione all'indirizzo del server, che nel mio caso sarà
https://biz-alessandro-bugatti.c9users.io/
./appcfg.py -A bizcard-1228 --noauth_local_webserver update ../appinventordb/
L'opzione --noauth_local_webserver è necessaria poichè App Engine si trova su Cloud9 e quindi non può aprire un browser sulla propria macchina. Questa opzione crea un link da copiare e incollare nel proprio browser per ottenere un codice di autenticazione che poi a sua volta deve essere incollato alla richiesta dello script di deployment. Fatto questo l'applicazione sarà attiva su proprio_ID_progetto.appspot.com e a questo punto sarà possibile usare il TinyWebDB usando come ServiceURL quell'indirizzo.