Introduction
Aujourd’hui, grâce à l’évolution des langages HTML, CSS et JS ainsi que des navigateurs mobiles (Safari, Webkit, Opera, Firefox…), il devient possible de créer des « web apps » rivalisant avec les applications natives.
PhoneGap est justement une des solutions permettant le développement d’applications mobiles pour Android, iOS, Windows Phone, Symbian, Bada et Blackberry OS, en utilisant des langages HTML, CSS et JS.
http://i.stack.imgur.com/j2SED.png
Avec PhoneGap, il est par exemple possible d’accéder aux fonctionnalités suivantes directement en javascript :
Fonctionnalité | Description |
Accelerometer | écouter le capteur de mouvement |
Camera | capturer une photo via l’application dédiée |
Capture | capturer les flux son/image/vidéo du téléphone |
Compass | orientation magnétique (N/S/E/O) de l’appareil |
Connection | informations sur la connectivité DATA |
Contacts | accès à la base de contacts |
Device | identifiant du smartphone |
Event | accès aux événements natifs (batterylow, volumeupbutton) |
File | lecture / écriture de fichiers |
Geolocation | réception des coordonnées géographiques |
Media | lecture de fichier audio |
Notification | notifications visuelles, sonores et tactiles |
Storage | accès à une base de données SQL |
Qu’est qu’un PhoneGap ?
PhoneGap est un framework dont l’objectif est de réduire le fossé (gap) qui sépare les applications web des applications natives. Plus précisément, il permet d’encapsuler une application web dans une application native et de lui fournir des outils supplémentaires.
Plug-in : JS/Natif
Tous les plugins PhoneGap sont constitués d’une classe Javascript qui expose la fonctionnalité dans l’application HTML/JS (boîte rouge dans la figure ci-dessous). La classe JavaScript (boîte verte dans la figure ci-dessous) communique à la couche native grâce à la classe de base en utilisant PhoneGap PhoneGap.exec(). La passerelle native de PhoneGap invoque ensuite le code natif du plugin (boîte de violet dans la figure ci-contre).
Image empruntée sur http://wiki.phonegap.com
Comment développer avec PhoneGap
Suivant la plateforme sur laquelle vous souhaitez développer votre application, la configuration nécessaire change.
Le tableau ci-dessous récapitule la configuration type par appareil.
IOS | Android | WindowsPhone |
|
|
|
Avantages/Inconvénients
Les points forts :
- Bonne intégration avec jQueryMobile (jQM)
- Développement & Déploiement rapide des applications mobiles versus web.
- Les plugins fournis en standard couvrent à 80% du besoin pour des applications catalogues/consultation
Les points faibles :
- L'utilisation des méthodes de callback est une charge non-négligeable
- Problème de portabilité avec des plugins spécifiques PhoneGap. Seule « l’API » exposée par les méthodes JavaScript reste stable entre plateformes, non pas le cœur de PhoneGap.
- Le niveau de qualité des plugins spécifiques est très hétérogène
- PhoneGap n’échappe pas non plus aux contraintes habituelles du web : les différences de rendu et comportement entre navigateurs
- Développement assez complexe d'une application dite« offline » : il faut combiner manuellement le localStorage HTML5, gérer de la synchronisation avec le serveur ensuite et traiter les erreurs JSON/Ajax.
Conclusion
Il ne faut pas voir PhoneGap comme une solution magique pour tout le développement mobile multiplateforme, mais il abaisse considérablement la barrière à l’entrée pour le développement sur mobile. En effet, il permet à des développeurs web de « porter » des programmes sur différents systèmes sans apprendre les langages spécifiques à chaque plateforme.
Le « simple » portage d’applis web vers des smartphones paraît séduisant, notamment par sa facilité, mais présente cependant bien des inconvénients, notamment sur les performances : voir par exemple la machine arrière de Facebook sur son appli mobile. C’est pourtant, en quelque sorte, le pari de FirefoxOS…
– Le pour : http://www.zdnet.fr/actualites/tristan-nitot-mozilla-firefox-os-repond-d-abord-aux-attentes-des-pays-emergents-39787701.htm#EREC-103
– Le contre : http://www.engadget.com/2013/03/01/firefox-os-is-repeating-the-mistakes-of-others/
Vincent,
Les clients doivent accepter de perdre un peu sur la qualité du produit, surtout, quand il s’agit d’obtenir une application tournant sur plusieurs plateformes (les sept OS supportés par PhoneGap) plutôt qu’une qualité du produit “très bonne” sur un périmètre plus réduit comme Android et iOS (quand même 70% de part de marché à eux deux). Ce n’est pas un drame mais il ne faut surtout pas s’imaginer que cela répond à 100% des besoins.
Par ailleurs, PhoneGap présente bien des inconvénients suivants:
->Performance(des méthodes de callback, localStorage HTML5)
->Portabilité(Si uniquement du JS OK sinon pas de portabilité)
->Maintenance(Si jamais un déploiement sur sept OS sont supportés par PhoneGap)
-> Réutilisabilité (Plugin spécifique => Hétérogène)
Abou92