Uso de Phonegap para el desarrollo de aplicaciones nativas
Recientemente me encontré con Phonegap . Que alguien lo haya probado. Es una herramienta increíble que afirma que los desarrolladores pueden utilizar el marco basado en HTML 5 como Sencha touch y Jquery al mismo tiempo tener acceso a características nativas en el teléfono. También el código es portátil de Android a Iphone con algún esfuerzo. Antes de que me sumerja en él quiero saber cuál es la experiencia del foro con Phonegap. ¿Cuáles son los puntos de dolor y es realmente escalable para el desarrollo de aplicaciones a nivel empresarial.
- ¿Cuál es la plataforma móvil más rápida para crear una aplicación Bluetooth?
- Teléfono: teclado numérico para entrada de texto
- Android equivalente a NSNotificationCenter
- El hack de la casilla de verificación de Android causa el traslado del sitio en el iPhone
- Implementación de un filtro digital - a través de convolución o ecuación de diferencia?
- Tarjeta de crédito con tarjeta de crédito
- ¿Qué trabajo se ha hecho en el desarrollo móvil multiplataforma?
- Limpiar por defecto algunas toallitas con jQuery touchwipe
- ¿Cuál es el equivalente a Android de findViewById (int) de Android?
- ¿Incrustar un emulador móvil en un sitio web?
- ¿Es valioso el appcelerator Titanium para el desarrollo de aplicaciones basadas en cámara en ipad, iphone y android?
- ¿Es posible acceder directamente a las señales de radio en teléfonos iOS o Android?
- ¿Hay una manera de escribir iphone y aplicaciones de Android usando Visual Studio y c #?
He construido un par de aplicaciones con PhoneGap, y por lo que ofrece, es genial. Hay un par de notas rápidas que me gustaría señalar, que podría ayudarle.
Disable device-based features you're not using
El acelerómetro, las funciones de geolocalización están activadas por defecto. Si no las utilizas, las desactivaré, ya que tu aplicación se cargará más rápido (inicializar) y correrá mejor.
onDeviceReady
– Este es el método que se llama una vez que phonegap ha cargado y está listo. $ (Documento) .ready o lo que sea que esté acostumbrado, realmente no se aplica aquí – a menos que sólo esté haciendo la interfaz / código HTML codificado. Si estás interactuando con funciones de iPhone, como GeoLocation, necesitarás hacer todo después de que onDeviceReady haya sido llamado.
Pick a UI/library
Hay un montón de opciones para la interfaz / librerías, jquery-mobile, sencha touch, jqtouch, etc. Cada una de ellas ofrece un enfoque único y conjunto de características. Hacer algunas investigaciones y utilizar uno, pero evitar la combinación. Puede leer algunas otras opciones, herramientas aquí: http://www.phonegap.com/tool (enlace actualizado)
Also, more on just mobile development in general, with PhoneGap
Si está buscando para crear aplicaciones, que se distribuyen a través del mercado de Android y iPhone App Store, leído a través de sus exhaustivas listas de directrices sobre cómo desarrollar su aplicación. Por ejemplo, en el enlace de herramientas arriba, hay una "herramienta / plugin" llamada Easy APNS , aunque esto es útil para Android y técnicamente factible en el iPhone, viola el acuerdo de desarrollo, ya que indica que debe usar la notificación de Apple Red, etc. Esto es sólo un ejemplo, pero leer sobre eso te ahorrará muchos dolores de cabeza, si ese es tu objetivo final.
En general, es ideal para aplicaciones ligeras, especialmente si vienes de un fondo de desarrollo web. LocalStorage, GeoLocation, etc. funciona muy bien. Espero que esto ayude un poco … y siente hacer preguntas.
Edición Adicional:
Realmente creo que se reduce a lo que quieres hacer, y lo que sabes hacer. Matt señaló que el desarrollo de aplicaciones nativas, para iOS es mejor, etc .. Sí, si usted tiene el tiempo y el conocimiento para aprender que – por supuesto nativos será mejor. Pero PhoneGap está hecho para los desarrolladores web que pueden tomar sus habilidades existentes y construir aplicaciones. Además, PhoneGap le permite crear aplicaciones rápidamente, para iOS, Android, Symbian, Palm, Blackberry. Con ajustes menores en su codebase para cada uno.
Aquí están todas las mejores guías de rendimiento que he leído para PhoneGap … hay mucho que tener cuidado de asegurar que tiene un rendimiento sólido y estable … pero se puede recoger todo en una sola noche de lectura.
Aquí están las mejores pepitas:
Consejos de rendimiento de PhoneGap / Mobile Web
- Cómo Diary.com aumentó el rendimiento de su aplicación PhoneGap que ejecuta Sencha: http://www.phonegap.com/2011/06/21/building-the-diary-com-ios-app-using-pg-sencha-touch/
- http://floatlearning.com/2011/03/developing-better-phonegap-apps/
- http://jslint.com/ – para depurar su javascript
- http://zeptojs.com/ y http://xuijs.com/ – Marcos alternativos mínimos para jquery y jqtouch
- Desactive el acelerómetro y la ubicación http://blogs.nitobi.com/jesse/2009/10/28/running-jqtouch-in-phonegap/
- Establece "EnableAcceleration" en false en PhoneGap.plist
- Ajuste "AutoRotate" a false en PhoneGap.plist
- http://mir.aculo.us/2010/06/04/making-an-ipad-html5-app-making-it-really-fast/
- http://cubiq.org/remove-onclick-delay-on-webkit-for-iphone
- Demo: http://cubiq.org/dropbox/clickdelay.html
- FastClick v TouchStart: http://groups.google.com/group/phonegap/browse_thread/thread/f5f5c78e26513821?pli=1
-
http://forum.jquery.com/topic/ontouch-instead-of-onclick-event
-
http://wiki.phonegap.com/w/page/16494809/Performance-tips-for-device/
- http://www.developer.nokia.com/Community/Wiki/JavaScript_Performance_Best_Practices
- http://evolvingwe.com/building-an-iphone-app-part-3-7-dev-tips/
- http://evolvingwe.com/upgrading-to-phonegap1-0/
-
VIDEO Consejos de rendimiento para Sencha Touch: http://vimeo.com/17882927
- Cubre las características de rendimiento de Sencha, que son grandes principios que podemos volver a aplicar. Podemos incluso ser capaces de cortar el código de ciertas piezas de Sencha para volver a aplicar para Skej.
- Indica que debemos destruir todo lo que no es visible en el DOM. Y que el DOM debe mantenerse lo más pequeño posible en todo momento, con tan pocos oyentes como sea posible. (Es decir, adjuntar un oyente al elemento principal de una lista, en lugar de a cada elemento de lista.)
- También tiene consejos prácticos CSS3 para mí aplicar … Básicamente, no utilice muchas de las nuevas transiciones y sombras / esquinas redondeadas porque la actual CPU de uso, y aún no GPU.
-
Delegación de eventos en Sencha Touch: Cómo diseñar listas con un solo oyente, y no una en cada línea. http://www.sencha.com/blog/event-delegation-in-sencha-touch/
- Optimización del uso de la memoria DOM en Sencha Touch: Deslizamiento de una lista a un panel Detalles y eliminando la lista y, a continuación, deslizando de Detalles a una lista y eliminando el panel de detalles. Minimizando elementos en su pantalla, su DOM. http://www.sencha.com/blog/sencha-touch-optimizing-memory-usage/
- ¡DESTRUYA CUALQUIER COSA QUE NO ES VISIBLE EN TUS DOMES!
- Utilizar animaciones CSS en lugar de jQuery
- http://nyroo.com/l/B7UN5c
- http://www.ferretarmy.com/css-animation-examples/
- Tenga cuidado … estos son difíciles cuando no aprovechan la GPU, y atascar la CPU.
Habilitación de nuevas funciones
- Habilitar Retina Display: http://evolvingwe.com/create-retina-display-images-in-mobile-web-themes-and-phonegap-apps/
- Desliza para eliminar: http://www.codesta.com/blog/2011/5/23/sencha-touchphonegap-tips-and-tricks.html
- Desactive el acelerómetro y la ubicación: http://iamcam.wordpress.com/2009/10/29/phonegap-up-to-speed/
- Cut jQuery y Hand-code: http://cubiq.org/do-you-really-need-jquery-for-mobile-dev
- Mostrar lista de contactos en Mobile Safari: http://cubiq.org/contact-list-on-webkit-for-iphone
- IScroll4: Cree una cabecera, desplácese dentro de una div de tamaño fijo, pellizque y haga zoom, tire hacia arriba / abajo de la actualización. http://cubiq.org/iscroll-4 (Incluye consejos sobre el efecto de banda de caucho.)
- Reps de GitHub de PhoneGap: Incluye ejemplos interesantes como DatePicker, SMSComposer, ApplicationPreferences, Splashscreen, NetworkActivityIndicator … https://github.com/phonegap/phonegap-plugins
Arquitectura
Arquitectando su aplicación en Ext JS 4: http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2
Antes de expresar mi opinión de Phonegap, necesito emitir un pequeño descargo de responsabilidad diciendo que no soy, de ninguna manera, un desarrollador web. Para mí, escribir JavaScript y CSS es como tirar de los dientes. Dicho esto, no me gusta Phonegap.
Hay algunos aspectos muy atractivos del marco, principalmente la apelación "Write-Once-Run-Anywere" y el "Yo-No-Tienes que Aprender-Objetivo-C". apelación. El marco puede incluso darle acceso a algunas de las características del hardware como el acelerómetro. Todos estos son válidos, hasta cierto punto.
Dicho esto, ninguna de las grandes aplicaciones de iOS se construyen utilizando cualquier tipo de marco de plataforma cruzada. Hay tantos sutiles y elegantes interacciones de interfaz de usuario que se manejan para usted por los controles nativos UIKit que muchos usuarios y desarrolladores dan por sentado hasta que están desaparecidos, como la gran cantidad de curvas de animación de vista increíblemente detallada y desplazamiento rebotes que no están allí En la interfaz de usuario basada en la vista web. Usted podría trabajar para reproducirlos perfectamente, pero para esa inversión de tiempo, ¿por qué no sólo ir nativo?
Un segundo punto a destacar es que la comunidad de soporte para las aplicaciones de iOS de Phonegap-built es drásticamente menor que las aplicaciones desarrolladas nativamente. Si usted es uno para confiar en la comunidad durante los proyectos, esto también debería darle una pausa.
Al final se reduce a la calidad de la experiencia que desea ofrecer. El límite superior es menor con Phonegap. Si está listo para aceptar una experiencia de usuario menos que excelente a cambio de tiempos de desarrollo reducidos y mayor portabilidad, es un marco muy viable.
Como subtexto para cualquiera que esté interesado, Marco Arment y Dan Benjamin recientemente discutieron este tema. Puedes escucharlo aquí .
El procedimiento de instalación implica una serie de paquetes (Java, Apache Ant, Ruby, iOS SDK, Android SDK y PhoneGap en sí mismo), que todos tienen que ser correctamente instalado y configurado. Esto puede ser un esfuerzo importante. Para ser justos, tienen algo llamado PhoneGap Build en beta que debería hacer esto mucho más fácil.
Lo usamos con NS Basic / App Studio para producir aplicaciones que califican para tiendas de aplicaciones.
Si su no están haciendo un juego ni widget, simplemente simple aspecto de la aplicación, entonces phonegap es su elección.
Pero debe tener cuidado con su JS, evitar hacer algo en JS por ejemplo, si desea hacer cualquier animación evitar establecer un temporizador con pequeños intervalos (por ejemplo, 100 ms), evitar jquery y animaciones similares. Por ejemplo, en lugar de animar el fundido al establecer un temporizador de período corto que disminuye la opacidad en cada punto paso a paso (esto es cómo se desvanece el trabajo de jquery), debería usar las transiciones css3 desde la opacidad 1 a la opacidad 0.
Mi consejo es ir con algo como zeptojs.com, después de todo phonegap no funcionará ie6 🙂
Revise algunos tutoriales sobre cómo hacer que su JS sea más ligera
Si no necesita ninguna de las características de hardware o rendimiento más allá de lo que HTML5 y Phonegap proporcionan, una aplicación web encapsulada (además de un acceso limitado a otras funciones) es una gran solución.
Muchas empresas implementan aplicaciones web de gran escala. Phonegap (o simplemente un simple control de visualización web con contenido incrustado) le permitirá ejecutar estas aplicaciones web sin conexión (excepto, por supuesto, para cualquier información en línea requerida).
Un "dolor" no mencionado al desplegar entre varios dispositivos diferentes: Cuantos más dispositivos, mayor es la curva de aprendizaje. Para implementar en dispositivos iOS con PhoneGap, necesitará aprender los conceptos básicos de Xcode en una Mac. Para implementar en Android, necesitará instalar y aprender Eclipse, el SDK de Android, etc. Las otras plataformas exigen que se utilicen sus propios SDK. Aprender algunos Xcode rudimentario, Javascript y Java me ayuda a entender los errores y la sintaxis general.
"Crear una vez, desplegar en todas partes" deja fuera un montón de pasos!