¿Cuáles son los pros y los contras de usar Apache Cordova (Phonegap) para construir tu aplicación iOS?

Nunca he hecho un desarrollo serio de iOS, pero he hecho una aplicación PhoneGap que está en la tienda de aplicaciones de iOS y por un corto tiempo estuvo en la tienda de Google Play (la retiramos porque algunos dispositivos Android no estaban renderizando nuestra aplicación correctamente - Tienes que probar muchos dispositivos Android).

Me considero bien versado en el desarrollo web, y estaba entusiasmado con las características que PhoneGap trae a las aplicaciones web. Ir a la ruta de la aplicación web HTML5 parecía la ruta más sana.

Pros

  • No tienes que aprender ningún lenguaje nuevo si ya eres un desarrollador web decente
  • Es muy rápido para crear prototipos
  • Aunque no lo usamos;Aunque no terminamos de usarlo, jQuery mobile es bastante bueno y hace que el prototipo sea aún más rápido
  • Muchas opciones de bibliotecas para casi todo lo que puedas querer
  • Es realmente genial y divertido
  • Si lo deseas, puedes evitar la tienda de aplicaciones mediante el alojamiento de los archivos en un servidor, y utilizar la caché de la aplicación para hacer las cosas más rápidas. Cambiar tu app es sólo cambiar una página web y su archivo de manifiesto de caché
  • Gestionar las imágenes para múltiples dispositivos es mucho más fácil con CSS y media queries que para un proyecto de iOS xcode y un proyecto de Android con sus ldpi, hdpi, xdpi, y lo que sea dpi.
  • Más fácil crear gráficos vectoriales según las especificaciones de diseño
  • Demonios, es'Es más fácil conseguir que las cosas sean exactamente como el diseño (excepto si usted se preocupa por la compatibilidad entre navegadores)

Contra

  • Hay un montón de navegadores móviles por ahí (el estado de los navegadores es peor que nunca en términos de cómo muchos diferentes de mierda que tenemos que apoyar - que solía ser sólo ie, pero supongo que cuántas personas están en android 2.x).x)
  • Hay una gran cantidad de dispositivos móviles por ahí con diferentes hardware, tamaños de pantalla, y la velocidad de la red
  • Algunas características que usted está acostumbrado a usar no están allí para todos los dispositivos (posición: estática, por ejemplo) y ya que esos son probablemente los dispositivos de mierda, el uso de un shim javascript (como iScroll) está fuera de la cuestión si usted se preocupa por el rendimiento
  • Hay algunos problemas de versión con el plugin de facebook-connect para phonegap (cordova) y las últimas versiones de phonegap en iOS solamente - Para obtener facebook connect y PhoneGap para trabajar tuve que usar una versión anterior de PhoneGap
  • La documentación para PhoneGap sí es bastante decente, pero it's todavía nuevo, por lo que no un montón de gente tiene información fiable sobre las versiones actuales (al menos este fue el caso hace 3-4 meses)
  • Como tuve que usar una versión anterior de PhoneGap, me encontré con que algunas de sus funciones api causaría errores de javascript. Tuve que evitar el azúcar que proporcionan y llamar a PhoneGap.exec directamente en su com.phonegap.whateverFunctionality - Fue feo, pero funcionaba
  • Hay complicaciones con la vinculación a otras aplicaciones como los mapas de Google
  • Encontré que guardar los contactos no funcionaba en todas las versiones de iOS
  • jQuery Mobile + Backbone es más de un dolor en el culo de lo que usted piensa
  • Conseguir transiciones neato puede ser un dolor
  • Hay menos facilidades en javascript para la modularización de las aplicaciones de gran escala que Objective-C o Java
  • .aplicaciones a gran escala que Objective-C o Java
  • Las pruebas apestan - ya no tanto http://labs.adobe.com/technologies/shadow/

Siento que los contras superan a los pros al final. Sin embargo, armados con este conocimiento, no diseñaríamos nuestra aplicación móvil igual. Por ejemplo, queríamos una experiencia similar a la nativa con una navegación de cabecera y pie de página posicionada estáticamente. Si la compatibilidad entre navegadores y el rendimiento son una preocupación, no querrás hacer esto. También evitaría las esquinas muy redondeadas. Android 2.x no lo hace muy bien.

Si tu aplicación es simple, entonces lo recomiendo. Realmente disfruté del proceso y de ver mi aplicación web como una aplicación instalada. Pero, que sepas que es más problemático de lo que parece.