Creare un client Twitter multipiattaforma panoramica

In questa serie, svilupperemo un client Twitter utilizzando i framework jQuery Mobile e PhoneGap. Questo progetto verrà implementato in ambienti Android e iOS come applicazione nativa. L'interfaccia utente dell'applicazione, chiamata semplicemente "Tweets", verrà creata utilizzando jQuery Mobile e PhoneGap verrà utilizzato per creare l'applicazione nativa. Useremo anche l'API di PhoneGap Storage per accedere alle funzionalità del database nativo. Tutte le codifiche verranno eseguite con HTML e JavaScript utilizzando jQuery, jQuery Mobile e le librerie PhoneGap.


Disponibile anche in questa serie:

  1. Creare un client Twitter multipiattaforma: panoramica
  2. Creare un client Twitter multipiattaforma: API Twitter e revisione del codice
  3. Creare un client Twitter multipiattaforma: completare la revisione del codice
  4. Creare un client Twitter multipiattaforma: distribuzione

Le caratteristiche principali dell'applicazione Tweets discussa in questa serie sono le seguenti:

  • Esiste un'unica istanza di codice dell'applicazione che si rivolge alle piattaforme Android e iOS. Questo illustra l'aspetto "scrivi una volta, distribuisci ovunque" dei framework jQuery Mobile e PhoneGap.
  • La funzionalità principale dell'applicazione Tweets è duplice: (1) ottenere la timeline di un utente (ad esempio i tweet più recenti postati dall'utente) e (2) trovare tweet da qualsiasi utente in cui il contenuto di tweet corrisponde a una query di ricerca. Per implementare tale funzionalità, l'applicazione utilizza i metodi di API Twitter basati sul web user_timeline e ricerca. Il codice dell'applicazione si basa sulla funzione jQuery ajax () per accedere a tali metodi API.
  • I nomi delle schermate utente e i termini di ricerca sono conservati in un archivio permanente in modo che possano persistere tra i riavvii delle applicazioni. A tale scopo, utilizzeremo il database PhoneGap e gli oggetti SQLTransaction.
  • L'interfaccia utente dell'applicazione Tweets supporta diversi layout per dispositivi a schermo stretto, in cui la larghezza di visualizzazione è inferiore a 500 pixel e dispositivi a schermo ampio, in cui la larghezza di visualizzazione è maggiore o uguale a 500 pixel. A tale riguardo, un tipico telefono Android o un dispositivo iPod touch è considerato un dispositivo a schermo stretto, mentre un tablet (ad esempio l'iPad) è considerato un dispositivo a schermo ampio. La soglia che separa i dispositivi narrow e wide screen è una costante nel codice dell'applicazione e può essere modificata se è necessaria un'ulteriore personalizzazione.
  • L'applicazione utilizza jquery-mobile-960, un'implementazione della griglia per jQuery Mobile, per visualizzare il contenuto in dispositivi widescreen. Nell'implementazione della griglia originale di jQuery Mobile, le colonne vengono divise in modo uniforme. La griglia jquery-mobile-960 consente colonne della griglia a larghezza variabile, offrendo al progettista dell'interfaccia utente maggiore flessibilità. Questo è particolarmente utile per gli ambienti tablet.
  • L'applicazione Tweets può essere importata in Eclipse per la piattaforma Android o Xcode per la piattaforma iOS. Un file di archivio che accompagna questa serie contiene tutti i file necessari per importare l'applicazione su tali IDE. Forniamo istruzioni per l'importazione dell'applicazione Tweets in Eclipse e Xcode.

Organizzazione della serie

Questo tutorial è stato organizzato in 4 parti. Nella prossima sezione della Parte I, denominata "jQuery Mobile e PhoneGap", presentiamo brevemente jQuery Mobile e PhoneGap e discutiamo lo sviluppo di applicazioni native multipiattaforma utilizzando tali framework. Nella seguente sezione, "Screen Flow", presentiamo l'applicazione Tweets e ne descriviamo il flusso. La sezione "jQuery Mobile Page Structure" è un'introduzione a diversi concetti di alto livello nel framework jQuery Mobile, in particolare, le pagine del contenitore e del contenuto.

Nella parte II, inizieremo la revisione dell'applicazione Tweets. In "Review Of index.html", il nostro obiettivo principale è la struttura statica del codice HTML e jQuery Mobile che costituisce le schermate dell'applicazione. La sezione denominata "API Twitter" offre una panoramica dei metodi dell'API di Twitter user_timeline e ricerca. La prossima sezione, "Code Review", fornisce una revisione del codice JavaScript che implementa la funzionalità dell'applicazione. La Parte II discuterà "Caricamento iniziale della pagina", "Funzioni di utilità" e "Funzioni di accesso al database" e avvierà la discussione su "Funzioni di core business core".

Nella parte III, continueremo a ispezionare le "Core Business Logic Functions", riprendendo da dove abbiamo lasciato nella parte II e terminando la revisione del codice dell'applicazione Tweets guardando "Event Handlers" e "Page Display Functions".

La parte finale del nostro tutorial, Parte IV, inizia con la sezione "File nell'archivio download", dove descriviamo il contenuto del file di archivio che accompagna questa serie. In "Argomenti specifici per l'ambiente", spieghiamo come importare l'applicazione in Eclipse per la piattaforma Android e Xcode per la piattaforma iOS. In quella sezione, forniamo anche le immagini dello schermo dell'applicazione in un telefono Android, un iPod touch e un iPad 2. Infine, facciamo delle osservazioni conclusive in "Conclusioni".

Titoli di coda

Tutte le icone e le immagini splash nell'archivio download sono state create sulla base di un set di icone fornito da Smashing Magazine. Come affermato sul sito Web collegato, "Puoi utilizzare il set per tutti i tuoi progetti gratuitamente e senza restrizioni, ma è vietato venderli."


jQuery Mobile e PhoneGap

Il jQuery Mobile Project è un sistema di interfaccia utente per dispositivi mobili che funziona in modo uniforme su diverse piattaforme, come Android e iOS. Mentre jQuery Mobile si concentra principalmente sull'uniformità dell'interfaccia utente in un paradigma dell'applicazione Web, il framework PhoneGap consente lo sviluppo di applicazioni native basate su HTML5 e JavaScript che possono essere implementate su più piattaforme mobili, tra cui Android e iOS. Tali framework possono essere utilizzati insieme per sviluppare applicazioni native in cui l'interfaccia utente viene creata tramite jQuery Mobile e le funzioni dei dispositivi nativi vengono create utilizzando PhoneGap.

Il diagramma seguente offre una vista semplificata di un'applicazione nativa distribuita su Android e iOS, sviluppata utilizzando HTML5, CSS e JavaScript.

  • L'interfaccia utente dell'applicazione utilizza librerie jQuery Mobile composte da diversi file JavaScript e CSS. Queste librerie forniscono un aspetto comune su più dispositivi Android e iOS.
  • La libreria PhoneGap e JavaScript espone un modello di programmazione comune che incapsula API di dispositivi nativi per Android e iOS.
  • L'applicazione è distribuita su dispositivi Android e iOS utilizzando strumenti di sviluppo specifici della piattaforma (ad esempio Eclipse per Android e Xcode per iOS). Questo passaggio è facilitato anche da PhoneGap in quanto fornisce librerie specifiche del dispositivo che si integrano con gli strumenti di sviluppo.

Si noti che sia jQuery Mobile che PhoneGap supportano piattaforme mobili aggiuntive come BlackBerry OS, Symbian e altri. Tuttavia, in questa serie ci concentreremo solo su Android e iOS.


Figura 1. jQuery Mobile e PhoneGap

Di seguito sono elencati i vantaggi dello sviluppo di applicazioni native con jQuery Mobile e PhoneGap.

  • Con jQuery Mobile, svilupperai l'interfaccia utente basata sul sistema di interfaccia utente mobile di jQuery usando HTML5, CSS e JavaScript. L'interfaccia utente avrà lo stesso aspetto e aspetto e supporterà un modello di gestione eventi uniforme su piattaforme diverse.
  • Allo stesso modo, per accedere alle funzionalità del dispositivo nativo, si codificherà in JavaScript utilizzando l'API del dispositivo PhoneGap. Non è necessario codificare le API specifiche del dispositivo. Su diverse piattaforme, l'applicazione funzionerà in modo uniforme.
  • Poiché non è necessario utilizzare l'interfaccia utente e i modelli di programmazione specifici della piattaforma, è possibile sviluppare e distribuire le applicazioni più rapidamente.
  • Sia jQuery Mobile che PhoneGap sono tecnologie open source.

D'altra parte, ci sono degli svantaggi nello sviluppo di un'applicazione nativa usando jQuery Mobile e PhoneGap. Alcuni di quelli sono menzionati di seguito.

  • L'interfaccia utente offerta da jQuery Mobile ha un aspetto particolare dell'applicazione web. Le funzionalità dell'interfaccia utente esclusive di una piattaforma andranno perse (questo potrebbe essere evitato incorporando una libreria CSS specifica per la piattaforma nell'applicazione, tuttavia combinarla con le librerie jQuery Mobile richiederebbe ulteriore sforzo di sviluppo).
  • Per accedere alle funzionalità native, sarai limitato a ciò che fornisce l'API del dispositivo PhoneGap, che è solo un sottoinsieme delle API native disponibili per Android o iOS (nota che l'API del dispositivo PhoneGap è ampia e comprende molte utili funzionalità native come l'Accelerometro , Camera, Geolocation, Media e Storage API tra molti altri).

Inoltre, come in qualsiasi progetto di sviluppo, devi ancora utilizzare strumenti di sviluppo e test specifici della piattaforma per testare e distribuire l'applicazione su dispositivi Android e iOS.

Per l'applicazione di esempio discussa in questa serie, abbiamo utilizzato jQuery Mobile versione 1.0 RC1 e PhoneGap versione 1.1.0. Quelle erano le ultime versioni al momento di creare questa serie.


Flusso dello schermo

Esistono due modelli distinti di flusso dello schermo, uno per i dispositivi a schermo panoramico in cui la larghezza dello schermo è superiore a 500 pixel e uno per i dispositivi a schermo stretto in cui la larghezza dello schermo è inferiore a 500 pixel. Con questa definizione, un dispositivo iPad sarà considerato wide-screen mentre un iPod touch o un telefono Motorola Droid sarà considerato a schermo stretto. La soglia, 500, è una costante definita nel codice dell'applicazione.

Vediamo innanzitutto il flusso dello schermo per i dispositivi widescreen. La schermata iniziale ha due pulsanti con le etichette "Aggiungi nome schermata" e "Aggiungi termine di ricerca". C'è un campo di testo sotto i pulsanti. Nella parte in basso a sinistra dello schermo c'è una lista composta dal nome della schermata e dai termini di ricerca inseriti dall'utente. I nomi delle schermate sono grigi e i termini di ricerca hanno uno sfondo giallo.


figura 2. Dispositivi widescreen: schermata iniziale

Per inserire un nome per lo schermo di Twitter, l'utente digita il nome nel campo di testo sotto i pulsanti e preme il pulsante "Aggiungi nome schermata". Allo stesso modo, per inserire un termine di ricerca di Twitter, l'utente digita il termine nel campo di testo sotto i pulsanti e pigia sul pulsante "Aggiungi termine di ricerca".

Se l'utente fa clic sul pulsante Elimina nella parte all'estrema destra di un elemento dell'elenco (rappresentato come 'x' all'interno di un cerchio), quell'elemento viene rimosso dall'elenco.


Figura 3. Eliminazione dell'elemento dell'elenco

Se l'utente fa clic su una voce di elenco per il nome di uno schermo Twitter, viene visualizzata una ruota che gira indicando che la timeline dell'utente (tweet) per quel nome di schermo viene recuperata da Twitter.


Figura 4. Dispositivi widescreen: recupero della cronologia dell'utente

Dopo aver ricevuto la sequenza temporale associata al nome della schermata, l'applicazione le visualizza sul lato destro della pagina accanto all'elenco. Quelli sono gli ultimi 11 elementi della timeline associati al nome dello schermo. La soglia, 11, è una costante definita nel codice dell'applicazione.


Figura 5. Dispositivi widescreen: cronologia utente

Nota che, secondo l'API di Twitter, è possibile recuperare la timeline di un utente senza autenticazione solo se la sua timeline non è protetta / privata. La nostra applicazione non prevede l'autenticazione, quindi il motivo sono solo le scadenze pubbliche a nostra disposizione.

Allo stesso modo, se l'utente fa clic su un elenco di elementi per un termine di ricerca di Twitter, viene visualizzata una ruota che gira come un indicatore che i risultati della ricerca vengono recuperati da Twitter, in modo simile al display nella Figura 4. Dopo aver ricevuto i risultati della ricerca, l'applicazione li visualizza sul lato destro della pagina accanto all'elenco, simile alla Figura 5. Questi sono gli ultimi 11 risultati associati al termine di ricerca. La soglia, 11, è una costante definita nel codice dell'applicazione.

La cronologia oi risultati di ricerca potrebbero includere collegamenti URL. Se l'utente preme uno di questi collegamenti, verrà avviato un browser Web per visualizzare la pagina Web associata al collegamento. Quando ciò accade, l'applicazione Tweets non è più attiva.

Lo schema seguente riepiloga il flusso dello schermo discusso sopra.


Figura 6. Dispositivi Wide-Screen: Screen Flow

Per i dispositivi a schermo stretto, il flusso dello schermo è simile, tuttavia, a causa della mancanza di spazio, gli input (voci di elenco), la pagina di avanzamento e i risultati vengono visualizzati in schermate diverse.

La schermata iniziale, la pagina 'Input', ha i pulsanti, il campo di testo e l'elenco dei nomi delle schermate e dei termini di ricerca impilati.


Figura 7. Dispositivi a schermo stretto: pagina di input

Se l'utente fa clic su una voce dell'elenco, la pagina "Avanzamento" viene visualizzata come una schermata separata.


Figura 8. Dispositivi a schermo stretto: pagina di avanzamento

Quando i risultati vengono ricevuti, la pagina di avanzamento viene sostituita dal 'Risultati'.


Figura 9. Dispositivi a schermo stretto: pagina dei risultati

Se l'utente preme uno dei collegamenti URL nella pagina Risultati, un'applicazione browser inizierà a visualizzare la pagina Web nel collegamento. Quando ciò accade, l'applicazione Tweets non è più attiva. Nei dispositivi Android, l'utente può tornare all'applicazione Tweets premendo il pulsante Indietro del dispositivo. Per i dispositivi iOS, l'utente deve chiudere il browser e avviare l'applicazione Tweets dalla schermata iniziale premendo l'icona dell'applicazione.

Lo schema seguente riepiloga il flusso dello schermo per i dispositivi a schermo stretto.


Figura 10. Dispositivi a schermo stretto: flusso dello schermo

Struttura della pagina mobile jQuery

Ora discuteremo come gli schermi nella nostra applicazione saranno rappresentati usando gli elementi della pagina jQuery Mobile (qui, prendiamo in prestito del materiale dal mio precedente tutorial Build a Contacts Application. Inoltre, per una discussione dettagliata su come le pagine sono costruite con jQuery Mobile framework, vedere la sezione Anatomia di una pagina nella documentazione di riferimento di jQuery Mobile).

Un singolo file HTML nel framework jQuery Mobile è costituito da una pagina del contenitore con una o più pagine di contenuto all'interno del contenitore. La pagina del contenitore ha un data-role = "pagina" attributo, mentre le pagine di contenuto hanno a data-role = "content" attributo. Una pagina di contenuto può facoltativamente avere sia un'intestazione sia un piè di pagina. Nell'esempio seguente, ci sono due pagine di contenuto con un'intestazione e un piè di pagina e una pagina di contenuto senza un'intestazione o un piè di pagina.

 
...
...
...
...
...
...
...

All'interno di una pagina del contenitore, è prevista la visualizzazione di una sola pagina di contenuto alla volta. L'idea è di raggruppare gli schermi logicamente correlati all'interno di una singola pagina del contenitore e definire ciascuno di essi come una pagina di contenuto. Ad esempio, tali pagine di contenuto potrebbero condividere codice JavaScript comune.

Nell'applicazione Tweets, c'è una pagina del contenitore che è memorizzata nella pagina fisica index.html. Quella pagina del contenitore memorizza tutte le pagine di contenuto necessarie all'applicazione. Per i dispositivi a schermo stretto, le schermate Inputs (Figura 7), Progress (Figura 8) e Risultati (Figura 9) sono rappresentate come pagine di contenuto separate. Per i dispositivi a schermo panoramico, esiste una sola pagina di contenuto, denominata "Wide", che fornisce tutte le funzionalità richieste. La seguente figura riassume questa discussione.


Figura 11. Struttura della pagina

Commenti finali

Nella parte iniziale di questo tutorial, abbiamo brevemente presentato jQuery Mobile e PhoneGap e abbiamo discusso lo sviluppo di applicazioni native multipiattaforma utilizzando tali framework. Quindi, abbiamo presentato l'applicazione Tweets e descritto il suo flusso di schermo. Successivamente, abbiamo presentato un'introduzione a diversi concetti di alto livello nel framework jQuery Mobile. In particolare, sono state discusse le pagine del contenitore e del contenuto.

Nella parte II, inizieremo la revisione dell'applicazione Tweets. In "Review Of index.html", il nostro focus principale sarà sulla struttura statica dell'HTML e sul codice jQuery Mobile che costituisce le schermate dell'applicazione. La sezione denominata "API Twitter" offrirà una panoramica dei metodi dell'API di Twitter user_timeline e ricerca. La prossima sezione, 'Code Review', fornirà una revisione del codice JavaScript che implementa la funzionalità dell'applicazione. La Parte II discuterà il "Caricamento iniziale della pagina", "Funzioni di utilità", "Funzioni di accesso al database" e quindi inizierà la discussione su "Funzioni di core business core".