Quels sont les avantages et les inconvénients d’utiliser Apache Cordova (Phonegap) pour construire votre application iOS ?

Je'n'ai jamais fait de développement iOS sérieux, mais j'ai fait une application PhoneGap qui'est dans l'iOS app store et qui a été pendant un court moment dans le Google Play store (nous l'avons retirée parce que certains appareils android ne rendaient pas notre application correctement - Vous devez tester beaucoup d'appareils android).

Je me considère comme bien informé dans le développement web, et j'étais excité par les fonctionnalités que PhoneGap apporte aux applications web. Prendre la voie des applications web HTML5 semblait être la voie la plus saine.

Pros

  • Vous n'avez pas à apprendre de nouveaux langages si vous'êtes déjà un développeur web décent
  • Il'est très rapide à prototyper
  • Bien que nous n'ayons&apos ;Bien que nous n'ayons pas fini par l'utiliser, jQuery mobile est assez chouette et rend le prototype encore plus rapide
  • Les nombreuses options de bibliothèque pour à peu près tout ce que vous pourriez éventuellement vouloir
  • C'est vraiment cool et amusant
  • Si vous le vouliez, vous pouvez contourner le magasin d'applications en hébergeant les fichiers sur un serveur, et utiliser le cache d'applications pour rendre les choses plus rapides. Changer votre app revient à changer une page web et son fichier manifeste de cache
  • Gérer les images pour plusieurs appareils est beaucoup plus facile avec CSS et media queries que pour un projet xcode iOS et un projet Android avec ses ldpi, hdpi, xdpi, et je ne sais quel dpi.
  • Facile de créer des graphiques vectoriels à la spécification de conception
  • Hell, it&apos ;est juste plus facile de faire en sorte que les choses soient exactement comme le design (sauf si vous vous souciez de la compatibilité entre les navigateurs)

Cons

  • Il existe beaucoup de navigateurs mobiles (l'état des navigateurs est pire que ce qu'il n'a jamais été en termes de nombre de différents navigateurs merdiques que nous devons prendre en charge - il y avait juste ie, mais devinez combien de personnes sont sur android 2.x)
  • Il existe de nombreux appareils mobiles avec des matériels, des tailles d'écran et des vitesses de réseau variables
  • Certaines fonctionnalités que vous'êtes habitué à utiliser ne sont'pas là pour tous les appareils (position : static par exemple) et puisque ces derniers sont probablement les appareils les moins performants, l'utilisation d'un shim javascript (comme iScroll) est hors de question si vous vous souciez des performances
  • Il semble y avoir des problèmes de version avec le plugin facebook-connect pour phonegap (cordova) et les dernières versions de phonegap sur iOS uniquement - Pour obtenir facebook connect et PhoneGap pour travailler, j'ai dû utiliser une ancienne version de PhoneGap
  • Documentation pour PhoneGap lui-même est assez décent, mais il&apos ;est encore nouveau, donc pas beaucoup de gens ont des informations fiables sur les versions actuelles (au moins c'était le cas il y a 3-4 mois)
  • Puisque j'ai dû utiliser une ancienne version de PhoneGap, j'ai trouvé que certaines de leurs fonctions api provoqueraient des erreurs javascript. J'ai dû contourner le sucre qu'ils fournissent et appeler PhoneGap.exec directement sur leur com.phonegap.whateverFunctionality - C'était moche, mais ça marchait
  • Il y a des complications avec la liaison à d'autres applications comme Google Maps
  • J'ai constaté que la sauvegarde des contacts ne fonctionnait pas sur toutes les versions d'iOS
  • jQuery Mobile + Backbone est plus casse-pieds que vous ne le pensez
  • La mise en place de transitions soignées peut être un problème
  • Il y a moins de facilités en javascript pour la modularisation d'applications à grande échelle qu'en Objective-C ou Java
  • .d'applications à grande échelle qu'en Objective-C ou Java
  • Les tests étaient nuls - plus autant maintenant http ://labs.adobe.com/technologies/shadow/

J'ai l'impression que les inconvénients l'emportent sur les avantages au final. Cependant, armés de ces connaissances, nous ne concevrions pas notre application mobile de la même manière. Par exemple, nous voulions une expérience similaire à celle d'une application native avec un en-tête et un pied de page de navigation positionnés de manière statique. Si la compatibilité entre navigateurs et les performances sont une préoccupation, vous ne voulez pas faire cela. J'éviterais également les coins fortement arrondis. Android 2.x ne'fait pas si bien avec cela.

Si votre application est simple, alors je le recommande. J'ai vraiment apprécié le processus et voir mon application web comme une application installée. Mais, sachez que c'est plus de difficultés qu'il n'y paraît.

.