Visualizzazione post con etichetta app-inventor-2. Mostra tutti i post
Visualizzazione post con etichetta app-inventor-2. Mostra tutti i post

venerdì 3 novembre 2017

Leggere / scrivere su tabelle fusion con App Inventor 2

Dopo aver fatto una discreta parentesi introduttiva riguardante le fusion tables, è finalmente venuto il momento di vedere come è possibile leggere e scrivere dati sulle fusion tramite MIT App Inventor 2.
La particolarità di queste utilissime tabelle di google, è quella di poter essere lette e scritte da remoto.
Immaginate a dei dati online sempre disponibili per i vostri utenti, delle tabelle dove poter scrivere e leggere a piacimento dalle proprie app, ecco questo è uno dei migliori utilizzi delle google fusion tables.

Ma vediamo subito nel pratico come leggere dati presenti su una tabella fusion tramite app inventor2.
La guida presa singolarmente potrebbe risultare un po' articolata, per cui userò come appoggio i post già fatti a riguardo le fusion, e mi occuperò solo della parte di codice legata ad appinventor.


Come leggere e scrivere sulle Tabelle Fusion tramite MIT App Inventor 2


Il primo requisito da soddisfare per poter iniziare ad utilizzare le fusion tables con app inventor, è ovviamente quello di aver creato e popolato una tabella google.
Non essendo suddetto passaggio un argomento di questo articolo, vi rimando a questo post per capire meglio come fare.

Dopo aver creato la nostra tabella fusion, possiamo passare al nostro progetto app inventor.
Nel designer, cerchiamo la sezione storage (archiviazione) e trasciniamo il componente invisibile Fusion tables control (controllo tabelle fusion).

I campi immediatamente disponibili sono:
  • Api key: la chiave api dove poter mettere il codice ottenuto dalla console sviluppatore di google (non ci serve per questa guida)
  • Key file: il file chiave necessario per poter autenticare un account di servizio, necessario per poter accedere ad una tabella fusion privata, tramite app inventor
  • Query: eventuale query subito preimpostata da interfaccia visiva (lasciare vuoto)
  • Service account email: l'email dell'account di servizio, necessario per poter accedere

Leggere / scrivere su tabelle fusion con App Inventor 2

Dopo un po' di prove, ho valutato che l'approccio migliore per la maggior parte delle app, è quella di accedere tramite un account di servizio alle fusion tables.
In questo modo, sarà possibile utilizzare le tabelle fusion senza dover far autenticare l'utente utilizzatore.
Siccome anche la creazione di un account di servizio l'ho già trattata, vi rimando a questo post.

Ricapitolando quello che bisogna fare:
  1. Creare una tabella fusion in stato privato
  2. Creare un account di servizio
  3. Creare un file chiave segreta p12 per l'account di servizio

Arrivati a questo punto dunque, del designer di app inventor andiamo a scrivere l'indirizzo dell'account di servizio creato, a caricare il key file, e a spuntare la voce Use service authentication (usa account di servizio).

Adesso torniamo alla nostra fusion table e clicchiamo su share ed impostiamo la tabella come privata.
Qui, aggiungiamo l'email di servizio appena creata, spuntando la voce che dice che non si vuol dare il permesso di poter aggiungere altri utenti.
E' in questa fase che si può stabilire se l'email utilizzata sarà in sola lettura o in scrittura.
Inoltre, ricordarsi di abilitare il download della tabella (file->rename), altrimenti non sarà accessibile tramite chiamate api.

permessi tabella fusion

Finalmente possiamo passare ad app inventor 2.
Adesso andiamo in blocks (blocchi) e trasciniamo l'oggetto call fusion tables control get rows (esegui controllo tabelle fusion ottieni righe) per ottenere i dati della tabella in consultazione, oppure insert row (inserisci riga) per accedere in scrittura.

A questi comandi dovremo passare il table id, l'id della tabella, recuperabile andando nell'interfaccia di gestione della google fusion e cliccando su File -> About this table -> ID.

table id

Poi occorre specificare le columns (colonne) da leggere / modificare, separate da virgola.
E nel caso di un insert, indicare anche il values (valori) da assegnare.
Ed anche le conditions (condizioni), nel caso si sia scelto di utilizzare il blocco della select sulle fusion tables tramite where (per dirla alla sql).

Già con queste poche righe di codice, se avremo fatto tutto giusto, potremo leggere e/o scrivere sulle fusion tables tramite app inventor 2.
Se poi vogliamo scrivere query più specifiche e complesse, possiamo utilizzare i blocchi set fusiontables control query (imposta fusion tables controllo query) e call fusion tables do query (esegui fusion query).

Infine, quale che sia la sintassi usata, per intercettare il risultato della chiamata alle fusion tramite appinventor, occorre usare il blocco when fusion tables control got result (per sempre quando fusion risultato query ricevuto).

when fusion tables control got result

Se avrete fatto tutto nel modo giusto, sarete riusciti a leggere e scrivere sulle tabelle google fusion tramite mit app inventor 2, altrimenti riceverete qualche errore a video, magari di permessi.

Vi lascio con il consueto link al progetto .aia, dove per motivi di sicurezza non ho abilitato l'utente di servizio alla scrittura (e magari potrebbe anche non esistere più quando scaricherete questo progetto).

Ah già, dimenticavo, se è la prima volta che usate le api delle fusion tables, forse dovrete prima ricordarvi di abilitarle, altrimenti potreste incappare nel terribile errore "403 forbidden prokect number is not found and cannot be used for api calls".
Collegatevi al seguente indirizzo, entrate nel progetto creato per l'utente di servizio, e cercate le api per le fusion tables:
https://console.developers.google.com/apis/library
Poi cliccate su Abilita.

Abilita fusion api

Bene, adesso dovreste essere in grado di usare le fusion tables da app inventor, in modo da poter sviluppare delle applicazioni che sono in grado di salvare dei dati online.
Ad esempio se sviluppate un videogioco con appinventor, può essere utile sapere come salvare i punteggi dei giocatori online... e questo è uno dei metodi più semplici :)

Torna all'elenco delle lezioni

sabato 28 ottobre 2017

Come popolare una fusion table da excel

Dopo aver imparato come creare una tabella fusion da zero, è arrivato il momento di vedere come fare in tutti quei casi si voglia popolare una fusion table da excel.
Questa operazione è molto banale, ma può risultare davvero non da poco sapere come poter importare un excel dentro una tabella google fusion.

Ovviamente, la fusiontable popolata, potrà poi essere utilizzata in mit app inventor 2, o per qualsiasi altro utilizzo, come ad esempio venir inclusa in un sito internet.
Vediamo subito come fare questa cosa.


Come popolare una google fusion table da excel


Per poter importare un excel dentro una fusion table, o anche un file csv, basta seguire i seguenti passaggi:
  1. Accedere al proprio account google
  2. Collegarsi al seguente indirizzo: https://support.google.com/fusiontables/
  3. Cliccare su Fusion tables
  4. Cliccare su Create a Fusion Table
  5. Cliccare su From this computer
  6. Cliccare su Sfoglia e caricare un file dal proprio computer, saranno accettati i seguenti formati: .csv, .tsv, or .txt
  7. Cliccare su Next
  8. Controllare se l'anteprima è ok, poi cliccare su Next
  9. Dare il nome alla tabella ed inserire eventuali altri dati utili, infine cliccare su Finish

Come popolare una fusion table da excel

La tabella fusion ora conterrà tutti i dati presenti nel foglio excel (o csv, o txt, o il formato caricato), e sarà possibile da ora in avanti gestire questi dati online.

Tutto molto semplice no?
In questo modo è possibile importare dati in una tabella fusion google, con pochi semplici click, e risparmiare così ore di data entry.

Ecco un video tutorial su quanto appena spiegato:
https://youtu.be/yD93s-yXRiw



Fine tutorial sulle fusion tables per app inventor 2 (e non).

Torna all'elenco lezioni mit app inventor

Creare account di servizio Google Fusion Tables

La scorsa volta vi avevo spiegato come creare tabelle fusion da interfaccia web, e come popolarle.
Oggi invece volevo trattare la creazione di un utente di servizio per le google fusion tables.
Un "service account" è infatti un utente temporaneo, se così si può chiamare, un utente che può essere utilizzato per far fare accesso alle vostre tabelle google fusion, da mit app inventor 2, o da qualsiasi altra applicazione.

Le fusion tables infatti, possono essere condivise con tutti, ed esser lette dalle app tramite le api key, oppure venir condivise solo con chi ne possiede il link.
Se però si vuole una maggior riservatezza dei dati, occorre mettere le tabelle fusion in stato privato, e condividere l'accesso solo a specifici utenti gmail.

Vediamo quindi come aggiungere un utente di servizio per far fare accesso alle google fusion tables dalle nostre applicazioni.


Come creare account di servizio per tabelle fusion google


Per poter aggiungere account di servizio per le tabelle fusion per poter far accedere in lettura e scrittura le proprie applicazioni, tra cui per mit app inventor 2, collegarsi al seguente indirizzo:

https://console.developers.google.com/projectselector/iam-admin/serviceaccounts

Ovviamente bisogna essere loggati con il proprio account google, e dare l'ok ad eventuali messaggi dislaimer.
Ora, nella schermata, cliccare nella sezione Crea account di servizio.

Creare account di servizio Google Fusion Tables

Ci verrà chiesto di creare un nuovo progetto, scriviamo il nome e clicchiamo su crea per proseguire.
Adesso ci verrà chiesto nuovamente di cliccare su "crea account di servizio", e compilare i seguenti campi obbligatori:
  • Nome: il nome dell'account, che farà parte dell'indirizzo gmail che andremo a creare
  • Ruolo: scegliere un ruolo per questo utente di servizio fusion tables, ad esempio project->editor.
  • ID account: se si vuole si può cambiare la parte iniziale dell'email che si sta andando a generare
  • Chiave primaria: potete scegliere se json o p12, e vi verrà generato un file di testo da salvare sul vostro computer ed utilizzare per l'autentificazione delle vostre applicazioni.
    Per appinventor server il p12.

Finito di indicare queste configurazioni, cliccare sul pulsante Crea.

utente di servizio fusion tables

Adesso potete tornare sulla vostra tabella fusion google ed andare su File -> Rename, e spuntare la voce Allow downloads per far in modo che le api d'accesso alle tabelle siano abilitate.

Infine, per poter utilizzare l'utente di servizio appena creato in app inventor 2, e non ricevere il terribile messaggio "forbidden forbidden", andare in Share, impostare la tabella come privata, e condividerla con l'utente di servizio appena creato.
Ovviamente poi nel progetto appinventor occorrerà anche caricare la chiave p12 generata prima... ma questo è un altro post (cit.)

Tutto quanto appena scritto è un po' meglio spiegato in questo video youtube:
https://youtu.be/81-3CCjkUEk



Bene, è ora possibile utilizzare gli account di servizio per scrivere sulle tabelle fusion da mit app inventor 2.

Torna all'elenco delle lezioni

martedì 17 ottobre 2017

Come creare fusion tables, tabelle google per app inventor 2

Le fusion tables sono delle tabelle di google che possono essere create e gestite direttamente online.
Proprio come dei veri database relazionali, tipo mysql, le tabelle fusion di google possono essere sfogliate tramite query, sia da comoda interfaccia web, sia tramite delle api.
Oppure volendo è anche possibile includere una tabella google su un proprio sito internet.

Queste tabelle google fusion tra l'altro, possono essere usate anche in mit app inventor 2, per poter leggere e salvare online i dati delle proprie app.

Ma andiamo per ordine, vediamo subito come creare tabelle fusion, come popolarle, e come modificarle.


Come creare fusion tables, le tabelle google online per app inventor 2


Per poter usare le tabelle fusion di google occorre ovviamente possedere un account google, quindi, dopo aver fatto accesso con il vostro account, collegatevi a questo indirizzo:

https://fusiontables.google.com/

Adesso basterà cliccare sul bottone "create a fusion table" e poi scegliere l'opzione create empty table.

Come creare fusion tables

In realtà, si finirà in una pagina con una tabella già popolata, con una struttura prestabilita ed una riga vuota.
Poco male comunque, per modificare una tabella google fusion, la sua struttura intendo, cliccate su Edit -> Change columns.

Change columns

Adesso, cliccando sui singoli campi a sinistra, si potranno cambiare le proprietà (a destra nella pagina), cambiandone il nome (colum name), il tipo (type, che va dal classico testo text ai numeri number, alle date), il formato (format), ed altri parametri tipici delle tabelle sql.

Sarà poi possibile eliminare una colonna cliccando sulla croce, o anche spostare ed ordinare i vari campi con il mouse (drag & drop).

edit fusion table

Per aggiungere un nuovo campo in una tabella fusion, basta cliccare su New->Column, oppure su new formula column, in caso si vogliano aggiungere campi calcolati.
Infine, per completare questa fase di creazione della tabella, cliccare su Save.

Una volta creata la struttura della nostra tabella, con tutti i suoi campi e controlli, sarà possibile rinominare la tabella cliccando sul nome in alto nella pagina, e personalizzare nella finestra che si aprirà, anche altri attributi.

Infine, per popolare una tabella fusion, cliccare su Edit->Add row, oppure, per modificare un valore già inserito, cliccare sulla riga da modificare e poi sulla matita.

edit row

Una volta preparato il tutto, sarà possibile condividere la tabella google fusion con i propri amici/collaboratori, cliccando sul bottone Share in alto a destra nella pagina, decidendo se si vuole rendere il proprio database completamente pubblico, o solo per chi ha il link, oppure privato per pochi eletti invitabili via mail.

Questa era solo una rapida carrellata su come creare tabelle fusion.
In questo video tutorial trovate il tutto spiegato in maniera un po' più chiara e pratica:
https://youtu.be/Vydv5eGePfg



E con le tabelle fusion è tutto, in questo post invece è spiegato come usarle per le nostre app mit app inventor 2.

Torna all'elenco delle lezioni

giovedì 25 maggio 2017

Creare un lettore RSS (Mit App Inventor 2)

Ti piacerebbe creare un'applicazione per android che legge e mostra le news in formato rss?
Se la risposta è si, devo darti una buona notizia, puoi fare questo ed altro tramite mit app inventor 2.

Nel breve tutorial che ti andrò ad illustrare, ti spiegherò come far leggere ad app inventor una pagina web in formato xml, che in questo caso specifico contiene gli articoli del mio sito in formato rss.

Vediamo dunque come creare un feed reader con app inventor 2.

feed reader con app inventor 2


Come creare un lettore RSS con Mit App Inventor 2


Il procedimento che ti sto per spiegare, ricalca in parte quanto già descritto nel tutorial che spiega come connettersi a risorse remote tramite App Inventor 2 (leggi l'articolo).

Il componente necessario per compiere questa operazione è il Visualizzatore Web (Web Viewer), da trascinare come di consueto nel visualizzatore.

Avendo già spiegato tutto nel precedente post, qui non spiegherò i passaggi da seguire per settare un indirizzo di una pagina web da far aprire (in questo caso quella contenente il feed rss).
L'unica cosa che ci tengo a precisare è che, almeno a quanto ho visto, non esiste una funzione predefinita di app inventor 2 per trattare l'xml.
Quando infatti catturerai il codice sorgente della pagina, che alla fine è in pratica l'html, il lavoro che dovrai fare sarà quello di individuare dei tag delimitatori, d'apertura e di chiusura, e creare una procedura per estrarre i campi dall'rss.

Nel progetto .aia che puoi trovare a questo link, mi sono limitato a pescare dal feed rss del mio sito internet, i titoli dei miei articoli, che ho individuato all'interno di appositi tag (<title> in questo caso).
Ho dovuto quindi usare la funzione blocco dividi (split) e poi lavorare con le liste (lists).

Creare un lettore RSS (Mit App Inventor 2)

Il risultato di queste poche righe di codice è la creazione di un'applicazione per android che legge i titoli rss dal mio sito web, nulla di esageratamente difficile, ma è sicuramente un buon inizio per lo sviluppo di applicazioni che oltre a mostrare il contenuto di uno specifico sito internet, poi possono svolgere anche altre funzioni.

Come avrai sicuramente intuito leggendo fino a qui, a seconda del sito che contiene i feed rss, dovrai individuare i delimitatori da utilizzare per estrapolare tutti i campi che ti serve mostrare sulla tua app.
In buona sostanza non esiste uno script universale a cui dai in pasto un xml e lui ti restituisce già i campi che ti interessano belli e puliti... almeno che io sappia.

Per questo breve tutorial su app inventor 2 è tutto, spero ti sia stato utile.

Torna all'elenco delle lezioni

lunedì 22 maggio 2017

Dialogare con una pagina PHP (Mit App Inventor 2)

Grazie a Mit App Inventor 2 puoi far svolgere molte funzioni utili al tuo cellulare, in modo da creare applicazioni e giochi che siano in grado di fare un po' di tutto.
Ci sono ovviamente però dei limiti in questa piattaforma web di sviluppo, limiti che per fortuna il php ti può aiutare a superare.

Potresti infatti avere l'esigenza di processare una variabile passata ad un pagina php, e di intercettare il risultato finale che questo script online ti restituisce.
Può essere il caso di controlli matematici avanzati, verifiche tramite funzioni che appinventor non possiede, o anche solo per potersi collegare velocemente ad un database online, uno a caso... mysql :)


Come dialogare con una pagina PHP tramite Mit App Inventor 2


Per poter passare delle variabili ad una pagina php tramite app inventor 2, ed intercettarne poi il risultato, hai bisogno semplicemente di due cose:
  1. Una pagina php ospitata su di uno spazio web gratuito (ecco qui una lista)
  2. Il componente Visualizzatore Web (Web Viewer) di app inventor2

Sul come creare una pagina php non metto becco, dovresti esserne tranquillamente in grado se stai leggendo questo post.
Tuttavia, ecco il codice d'esempio che ho utilizzato io nella mia pagina test.php, se può esserti utile:

<?
    $key=trim($_POST['key']);
    $testo=trim($_POST['testo']);
    if($
testo<>""&&$key<>"")
    {
        if($key=="keytest") echo "$testo";
    }
?>


Sostanzialmente ho creato una pagina php che da app inventor si aspetta due variabili, una variabile chiamata $key che rappresenta il codice d'accesso di sicurezza alla pagina php, in modo che in teoria solo la mia app possa dialogare con questo script, ed una variabile chiamata $testo, che contiene la risposta da stampare a video come risultato.

Bene, adesso passiamo ad app inventor ed andiamo a trascinare nel visualizzatore il blocco VisualizzatoreWeb (WebViewer).

Ora andiamo direttamente nei blocchi (blocks) e valorizziamo al caricamento dello schermo, il blocco Imposta web indirizzo (set web url), passandogli come variabile testuale l'url della pagina php da chiamare.

Adesso aggiungiamo al click di un pulsante, il blocco Esegui web invia testo (call web post text), ovvero il blocco che serve per comunicare con pagina web.
In questo blocco, per poter passare i parametri allo script php online, creiamo una lista che contiene due liste, una a cui passiamo il key di sicurezza, ed una a cui passiamo la variabile testo.
La pagina web, aspettandosi due variabili, avrà infatti bisogno di una coppia di valori, una che gli dice come si chiama la variabile, ed una che ne indica il suo contenuto.

Infine, andiamo ad intercettare la risposta della pagina con questo blocco: Per sempre quando web lettura file completata (when web got text), al quale aggiungeremo un controllo sul codice restituito dalla pagina (se la pagina restituisce 200 è ok) tramite la variabile CodiceRisposta (ResponseCode), ed ovviamente la risposta, contenuta nella variabile ContenutoRisposta (ResponseContent).

Dialogare con una pagina PHP (Mit App Inventor 2)

Se avrai fatto tutto correttamente, a video la tua app ti riporterà il messaggio inserito nella pagina php, che in questo caso è: "Test php riuscito"!

Trovi ovviamente questo esempio nel progetto .aia che ti allego qui.

Questo come al solito era solo un semplice esempio di funzionamento per spiegare il dialogo tra una pagina php e app inventor 2.
Ora potrai quindi creare degli script php molto potenti, per aumentare ciò che la tua app può fare, e superare così alcuni limiti di appinventor2.

Torna all'elenco delle lezioni

domenica 7 maggio 2017

Problema accentate / caratteri speciali (Mit App Inventor 2)

Stavo creando un'applicazione Mit App Inventor 2 che pesca dei dati dal classico file csv, ecco che incappo nello spinoso problema delle lettere accentate.

Se sei uno sviluppatore di vecchia data, che magari salta spesso da ambienti windows e linux, su vari linguaggi di programmazione, di sicuro sai di cosa sto parlando.
I caratteri speciali sono spesso una rogna a causa dei vari problemi di codifica, di cui spesso non si sa mai che formato usare e come mai al posto delle lettere accentate appaiono strani simboli (es. il punto di domanda).

Problema accentate / caratteri speciali (Mit App Inventor 2)


Come risolvere il problema accentate / caratteri speciali su Mit App Inventor 2


Per superare il problema legato agli special characters in App inventor 2, ascii e compagnia bella, in modo da poter importare nella tua applicazione stringe / lettere / frasi / dati da ogni fonte (csv, mysql, tinydb, ecc...), devi risolvere il problema alla radice.

Se si tratta di dati presi da una pagina web ad esempio, bisogna specificare il charset usato già nella pagina stessa.

Se invece stiamo andando ad importare in una lista un file .csv, dopo magari averlo generato da excel, possiamo aprire il csv con il blocco note, poi, fare salva con nome, e selezionare la codifica UTF-8 (di solito va bene questa, ma nel caso fai altri tentativi, es con unicode).

codifica UTF-8

Adesso non resterà altro che importare il file csv codificato dentro il nostro appinventor 2, e rilanciare il gioco/programma.
Come per magia ora le accentate si vedranno correttamente.

Problema accentate risolto

Spero che questa guida ti sia stata utile.
I problemi con le accentate e/o i caratteri speciali in generale, sono sempre un fastidioso ed antipatico grattacapo.
Dietro c'è tutto un perchè sul fatto che all'alba del 2017 non esistano ancora programmi e piattaforme in grado di gestirle d'ufficio, quindi quando ci si incappa, bisogna solo rimboccarsi le maniche e cercare di risolvere.

Torna all'elenco delle lezioni