Construire un client Twitter multiplate-forme vue d'ensemble

Dans cette série, nous allons développer un client Twitter utilisant les frameworks jQuery Mobile et PhoneGap. Ce projet sera déployé dans les environnements Android et iOS en tant qu'application native. L’interface utilisateur de l’application, appelée simplement «Tweets», sera construite à l’aide de jQuery Mobile et PhoneGap sera utilisé pour créer l’application native. Nous utiliserons également l’API de stockage PhoneGap pour accéder aux fonctionnalités de la base de données native. Tout le codage sera fait avec HTML et JavaScript en utilisant jQuery, jQuery Mobile et les bibliothèques PhoneGap.


Aussi disponible dans cette série:

  1. Construire un client Twitter multiplate-forme: vue d'ensemble
  2. Construire un client Twitter multiplate-forme: API Twitter et révision du code
  3. Construire un client Twitter multiplate-forme: fin de la révision du code
  4. Construire un client Twitter multiplate-forme: déploiement

Les principales caractéristiques de l'application Tweets abordées dans cette série sont les suivantes:

  • Il existe une seule instance de code d'application qui s'adresse aux plates-formes Android et iOS. Ceci illustre l'aspect 'écrire une fois, déployer n'importe où' des frameworks jQuery Mobile et PhoneGap.
  • La fonctionnalité principale de l'application Tweets est double: (1) obtenir la chronologie de l'utilisateur (par exemple, les tweets les plus récents publiés par l'utilisateur) et (2) rechercher les tweets de tout utilisateur lorsque le contenu du tweet correspond à une requête de recherche. Pour mettre en œuvre cette fonctionnalité, l'application utilise les méthodes de l'API Twitter basées sur le Web. user_timeline et chercher. Le code de l'application est basé sur la fonction jQuery ajax () pour accéder à ces méthodes de l'API..
  • Les noms d'écran et les termes de recherche des utilisateurs sont conservés dans un magasin permanent afin qu'ils persistent entre les redémarrages d'applications. Pour cela, nous allons utiliser les objets PhoneGap Database et SQLTransaction.
  • L'interface utilisateur de l'application Tweets prend en charge différentes dispositions pour les périphériques à écran étroit, où la largeur d'affichage est inférieure à 500 pixels, et les périphériques à écran large, où la largeur d'affichage est supérieure ou égale à 500 pixels. À cet égard, un téléphone Android ou un iPod touch typique est considéré comme un appareil à écran étroit, alors qu'une tablette (par exemple, l'iPad) est considérée comme un appareil à écran large. Le seuil séparant les dispositifs à écran large et étroit est une constante dans le code de l'application et peut être modifié si une personnalisation supplémentaire est nécessaire..
  • L'application utilise jquery-mobile-960, une implémentation de grille pour jQuery Mobile, permettant d'afficher du contenu sur des périphériques grand écran. Dans l'implémentation de jQuery Mobile d'origine sur la grille, les colonnes sont divisées de manière égale. La grille jquery-mobile-960 permet des colonnes de grille de largeur variable, offrant ainsi plus de flexibilité au concepteur d'interface utilisateur. Ceci est particulièrement utile pour les environnements de tablette.
  • L'application Tweets peut être importée dans Eclipse pour la plateforme Android ou Xcode pour la plateforme iOS. Un fichier d’archive accompagnant cette série contient tous les fichiers nécessaires pour importer l’application dans ces IDE. Nous fournissons des instructions pour importer l'application Tweets dans Eclipse et Xcode..

Organisation de la série

Ce tutoriel a été organisé en 4 parties. Dans la section suivante de la partie I, intitulée "jQuery Mobile et PhoneGap", nous présentons brièvement jQuery Mobile et PhoneGap et traitons du développement d'applications natives multiplates-formes à l'aide de ces infrastructures. Dans la section suivante, "Flux d'écran", nous présentons l'application Tweets et décrivons son déroulement d'écran. La section intitulée "Structure de la page jQuery Mobile" est une introduction à plusieurs concepts de haut niveau du framework jQuery Mobile, en particulier les pages de conteneur et de contenu..

Dans la partie II, nous commencerons par examiner l'application Tweets. Dans "Review Of index.html", nous nous concentrons principalement sur la structure statique du code HTML et du code jQuery Mobile qui constituent les écrans de l'application. La section "API Twitter" donne un aperçu des méthodes de l'API Twitter. user_timeline et chercher. La section suivante, "Révision du code", passe en revue le code JavaScript implémentant les fonctionnalités de l'application. La deuxième partie traitera du "Chargement initial de la page", des "Fonctions utilitaires" et des "Fonctions d'accès à la base de données", et débutera la discussion sur les "Fonctions logiques de base de la gestion".

Dans la troisième partie, nous continuerons d'inspecter les "fonctions logiques fondamentales de l'entreprise", en reprenant la position que nous avions laissée dans la deuxième partie et en terminant l'examen du code de l'application Tweets en examinant les "gestionnaires d'événement" et les "fonctions d'affichage de page"..

La dernière partie de notre didacticiel, Partie IV, commence par la section intitulée "Fichiers de l'archive de téléchargement", dans laquelle nous décrivons le contenu du fichier d'archive accompagnant cette série. Dans la section "Thèmes spécifiques à l'environnement", nous expliquons comment importer l'application dans Eclipse pour la plate-forme Android et Xcode pour la plate-forme iOS. Dans cette section, nous donnons également des images d'écran de l'application dans un téléphone Android, un iPod touch et un iPad 2. Enfin, nous donnons des remarques finales dans "Conclusions"..

Crédits

Toutes les icônes et les images Splash de l’archive de téléchargement ont été créées à partir d’un ensemble d’icônes fourni par Smashing Magazine. Comme indiqué sur le site Web lié, "Vous pouvez utiliser l'ensemble pour tous vos projets gratuitement et sans aucune restriction. Cependant, il est interdit de les vendre."


jQuery Mobile et PhoneGap

Le projet jQuery Mobile est un système d'interface utilisateur pour appareils mobiles qui fonctionne de manière uniforme sur différentes plates-formes, telles qu'Android et iOS. Alors que jQuery Mobile se concentre principalement sur l'uniformité de l'interface utilisateur dans un paradigme d'application Web, le cadre PhoneGap permet de développer des applications natives basées sur HTML5 et JavaScript pouvant être déployées sur plusieurs plates-formes mobiles, notamment Android et iOS. Ces frameworks peuvent être utilisés ensemble pour développer des applications natives où l'interface utilisateur est construite via jQuery Mobile et les fonctions de périphérique natives sont construites à l'aide de PhoneGap..

Le diagramme suivant donne une vue simplifiée d'une application native déployée sous Android et iOS, développée à l'aide de HTML5, CSS et JavaScript..

  • L'interface utilisateur de l'application utilise les bibliothèques jQuery Mobile composées de plusieurs fichiers JavaScript et CSS. Ces bibliothèques offrent une apparence commune sur plusieurs appareils Android et iOS..
  • La bibliothèque PhoneGap et JavaScript expose un modèle de programmation commun encapsulant des API de périphérique natif pour Android et iOS..
  • L'application est déployée sur des appareils Android et iOS à l'aide d'outils de développement spécifiques à la plate-forme (par exemple, Eclipse pour Android et Xcode pour iOS). PhoneGap facilite également cette étape, car il fournit des bibliothèques spécifiques à l’appareil qui s’intègrent aux outils de développement..

Notez que jQuery Mobile et PhoneGap prennent en charge des plates-formes mobiles supplémentaires telles que BlackBerry OS, Symbian et autres. Cependant, dans cette série, nous nous concentrerons uniquement sur Android et iOS..


Figure 1. jQuery Mobile et PhoneGap

Les avantages suivants du développement d'applications natives à l'aide de jQuery Mobile et PhoneGap sont énumérés ci-dessous..

  • Avec jQuery Mobile, vous développez l'interface utilisateur basée sur le système d'interface utilisateur jQuery Mobile à l'aide de HTML5, CSS et JavaScript. L'interface utilisateur aura la même apparence et supportera un modèle de gestion d'événements uniforme sur différentes plates-formes..
  • De même, pour accéder aux fonctionnalités de l'appareil natif, vous devez coder en JavaScript à l'aide de l'API de l'appareil PhoneGap. Il n'est pas nécessaire de coder contre des API spécifiques à un périphérique. Sur différentes plateformes, l'application fonctionnera de manière uniforme..
  • Etant donné que vous n'avez pas besoin d'utiliser d'interface utilisateur et de modèles de programmation spécifiques à la plate-forme, vous pouvez développer et déployer vos applications plus rapidement..
  • JQuery Mobile et PhoneGap sont des technologies open source.

D'autre part, le développement d'une application native utilisant jQuery Mobile et PhoneGap présente des inconvénients. Certains d'entre eux sont mentionnés ci-dessous.

  • L’interface utilisateur proposée par jQuery Mobile présente une apparence d’application Web particulière. Les fonctionnalités de l'interface utilisateur propres à une plate-forme seront perdues (ceci pourrait éventuellement être évité en incorporant une bibliothèque CSS spécifique à la plate-forme dans votre application. Toutefois, sa combinaison avec les bibliothèques de jQuery Mobile nécessiterait un effort de développement supplémentaire.).
  • Pour accéder aux fonctionnalités natives, vous serez limité aux informations fournies par l'API de périphérique PhoneGap, qui n'est qu'un sous-ensemble des API natives disponibles pour Android ou iOS (notez que l'API de périphérique PhoneGap est large et englobe de nombreuses fonctionnalités natives utiles telles que l'Accelerometer. , Caméras, géolocalisation, médias et API de stockage parmi beaucoup d’autres).

En outre, comme dans tout projet de développement, vous devez toujours utiliser des outils de développement et de test spécifiques à la plate-forme pour tester et déployer votre application sur des appareils Android et iOS..

Pour l’exemple d’application présenté dans cette série, nous avons utilisé jQuery Mobile version 1.0 RC1 et PhoneGap version 1.1.0. C'étaient les dernières versions au moment de créer cette série.


Flux d'écran

Il existe deux types de flux d’écran distincts: l’un pour les appareils à écran large où la largeur d’affichage est supérieure à 500 pixels et l’autre pour les appareils à écran étroit dont la largeur d’affichage est inférieure à 500 pixels. Avec cette définition, un iPad sera considéré comme un écran large, tandis qu'un iPod touch ou un téléphone Motorola Droid sera considéré comme un écran étroit. Le seuil, 500, est une constante définie dans le code de l'application..

Voyons tout d’abord le déroulement de l’écran pour les appareils grand écran. L'écran initial comporte deux boutons portant les libellés "Ajouter un nom d'écran" et "Ajouter un terme de recherche". Il y a un champ de texte sous les boutons. Dans la partie inférieure gauche de l'écran, une liste comprend le nom d'écran et les termes de recherche saisis par l'utilisateur. Les noms d'écran sont gris et les termes de recherche sont sur fond jaune..


Figure 2. Appareils à écran large: écran initial

Pour entrer un nom d’écran Twitter, l’utilisateur tape le nom dans le champ de texte situé sous les boutons, puis appuie sur le bouton «Ajouter un nom d’écran». De même, pour entrer un terme de recherche Twitter, l'utilisateur le saisit dans le champ de texte situé sous les boutons, puis appuie sur le bouton "Ajouter un terme de recherche"..

Si l'utilisateur clique sur le bouton de suppression situé à l'extrême droite d'un élément de la liste (représenté par un «x» dans un cercle), cet élément est supprimé de la liste..


figure 3. Supprimer l'élément de liste

Si l'utilisateur clique sur un élément de la liste pour un nom d'écran Twitter, une roue en rotation s'affiche pour indiquer que la chronologie de l'utilisateur (tweets) pour ce nom d'écran est en cours de récupération sur Twitter..


Figure 4. Périphériques grand écran: Récupération de la chronologie utilisateur

Après avoir reçu la chronologie associée au nom d'écran, l'application les affiche à droite de la page, à côté de la liste. Ce sont les 11 derniers éléments de la chronologie associés au nom d'écran. Le seuil, 11, est une constante définie dans le code de l'application.


Figure 5. Périphériques grand écran: chronologie utilisateur

Notez que, selon l'API Twitter, il est possible de récupérer la chronologie d'un utilisateur sans authentification uniquement si sa chronologie n'est pas protégée / privée. Notre application ne comporte pas d'authentification, par conséquent, nous ne disposons que de calendriers publics..

De même, si l'utilisateur clique sur une liste d'éléments pour un terme de recherche Twitter, une roue en rotation s'affiche, indiquant que les résultats de la recherche sont en cours de récupération sur Twitter, comme dans la Figure 4. Après avoir reçu les résultats de la recherche, l'application les affiche dans la partie droite de la page en regard de la liste, comme dans la figure 5. Il s’agit des 11 derniers résultats associés au terme recherché. Le seuil, 11, est une constante définie dans le code de l'application.

La chronologie ou les résultats de la recherche peuvent inclure des liens URL. Si l'utilisateur appuie sur l'un de ces liens, un navigateur Web s'ouvrira pour afficher la page Web associée au lien. Lorsque cela se produit, l'application Tweets n'est plus active..

Le diagramme ci-dessous résume le déroulement de l'écran décrit ci-dessus..


Figure 6. Appareils à écran large: flux d'écran

Pour les périphériques à écran étroit, le déroulement de l'écran est similaire. Toutefois, en raison du manque d'espace, les entrées (éléments de la liste), la page de progression et les résultats s'affichent sur différents écrans..

L'écran initial, la page 'Entrées', contient les boutons, le champ de texte et la liste des noms d'écran et des termes de recherche empilés..


Figure 7. Périphériques à écran étroit: page Entrées

Si l'utilisateur clique sur un élément de la liste, la page "Progression" est affichée sur un écran séparé..


Figure 8. Périphériques à écran étroit: page de progression

Lorsque les résultats sont reçus, la page Progression est remplacée par la case "Résultats"..


Figure 9. Appareils à écran étroit: page de résultats

Si l'utilisateur appuie sur l'un des liens URL de la page de résultats, une application de navigation commencera à afficher la page Web dans le lien. Lorsque cela se produit, l'application Tweets n'est plus active. Sur les appareils Android, l'utilisateur peut revenir à l'application Tweets en appuyant sur le bouton Précédent de l'appareil. Pour les appareils iOS, l'utilisateur doit fermer le navigateur et lancer l'application Tweets à partir de l'écran d'accueil en appuyant sur l'icône de l'application..

Le diagramme ci-dessous résume le déroulement de l'écran pour les périphériques à écran étroit..


Figure 10. Dispositifs à écran étroit: Flux d'écran

Structure de la page jQuery Mobile

Nous allons maintenant discuter de la façon dont les écrans de notre application seront représentés à l'aide des éléments de page de jQuery Mobile (ici, nous empruntons certains éléments de mon précédent tutoriel, Construire une application de contacts. Pour une discussion détaillée sur la manière de créer des pages avec jQuery Mobile voir la section Anatomie d’une page dans la documentation de référence de jQuery Mobile).

Un seul fichier HTML dans la structure jQuery Mobile consiste en une page de conteneur avec une ou plusieurs pages de contenu à l'intérieur du conteneur. La page de conteneur a un data-role = "page" attribut, alors que les pages de contenu ont un data-role = "content" attribut. Une page de contenu peut éventuellement comporter à la fois un en-tête et un pied de page. Dans l'exemple ci-dessous, il y a deux pages de contenu avec un en-tête et un pied de page, et une page de contenu sans en-tête ni pied de page..

 

Dans une page de conteneur, il est prévu d'afficher une seule page de contenu à la fois. L'idée est de regrouper les écrans liés de manière logique dans une seule page de conteneur et de définir chacun d'entre eux en tant que page de contenu. Par exemple, ces pages de contenu peuvent partager du code JavaScript commun.

Dans l'application Tweets, une page de conteneur est stockée dans la page physique. index.html. Cette page de conteneur stocke toutes les pages de contenu nécessaires à l'application. Pour les périphériques à écran étroit, les écrans Entrées (Figure 7), Progression (Figure 8) et Résultats (Figure 9) sont représentés dans des pages de contenu distinctes. Pour les appareils à écran large, il n’existe qu’une seule page de contenu, nommée «Large», fournissant toutes les fonctionnalités requises. La figure suivante résume cette discussion.


Figure 11. Structure de la page

Remarques de clôture

Dans la partie initiale de ce didacticiel, nous avons brièvement présenté jQuery Mobile et PhoneGap et discuté du développement d’applications natives multiplates-formes utilisant ces frameworks. Ensuite, nous avons présenté l'application Tweets et décrit son déroulement à l'écran. Ensuite, nous avons présenté plusieurs concepts de haut niveau dans le framework jQuery Mobile. En particulier, les pages contenant et contenu ont été discutées.

Dans la partie II, nous commencerons par examiner l'application Tweets. Dans "Review Of index.html", nous nous concentrerons principalement sur la structure statique du code HTML et du code jQuery Mobile qui constitue les écrans de l'application. La section "API Twitter" donnera un aperçu des méthodes de l'API Twitter. user_timeline et chercher. La section suivante, "Code Review", passera en revue le code JavaScript implémentant les fonctionnalités de l'application. La deuxième partie traitera du "Chargement de page initial", des "Fonctions utilitaires", des "Fonctions d'accès à la base de données", puis lancera la discussion sur les "Fonctions logiques de base de l'entreprise"..