Blog

APPS MÓVILES: NATIVO VS CORDOVA O PHONEGAP

Apps móviles: ¿Cómo decidir si desarrollar una aplicación nativa o híbrida (usando Cordova)?

En algún momento nos hemos encontrado con el dilema de decidir cómo desarrollar apps móviles: nativo vs Cordova o PhoneGap. Para ayudarte a decidir cómo desarrollar tu app móvil, te presentamos una lista con las razones de por qué hacer una aplicación nativa o una híbrida (éste último caso usando Cordova u otra herramienta).

Es importante tener presente los factores críticos de la app así como el presupuesto, ya que estos definirán el método a elegir.

¿Por qué usar Cordova?

1. Más desarrolladores disponibles

Generalmente, los desarrolladores de una plataforma en particular como Android o iOS son escasos y costosos. En cambio, en el mercado hay más disponibilidad de front-end developers o full-stack developers que manejan HTML, CSS y JavaScript, los cuales pueden aplicar sus conocimientos para desarrollar una aplicación en Cordova sin problemas.

2. Conveniente para aplicaciones sencillas

Con Cordova es bastante fácil crear que se basan en formularios, o aplicaciones para prueba de concepto.

3. Facilita el manejo de imágenes

El manejo de archivos de imágenes es más simple, ya que se hace con CSS, y no se requiere definir las diferentes resoluciones que son requeridas en apps nativas, en la cual hay que definir diferentes archivos para las diferentes resoluciones de pantalla.

4. Una sola base de código

Al desarrollar una aplicación con Cordova, se pueden soportar múltiples plataformas con la misma base de código, lo cual ahorra gastos de mantenimiento.

5. Funcionalidades nativas disponibles como plugins

Muchas de las funcionalidades nativas se encuentran disponibles como plugins. En esta tabla de plataformas soportadas por Cordova puedes ver que las funcionalidades más comunes como cámara, acelerómetro, almacenamiento en el dispositivo, etc., cuentan con plugins para ser usadas desde tu aplicación creada con Cordova.

 

¿Por qué usar Nativa?

1. Mejor procesamiento de datos del lado del cliente

Recomendable cuando hay mayor procesamiento en el lado del cliente: Proporciona mayor desempeño, velocidad, y seguridad que una aplicación híbrida.

2. La interfaz responde más rápido a la interacción del usuario

Cuando la aplicación es nativa, es más fácil lograr que la aplicación se sienta rápida en respuesta a la interacción del usuario. Con Cordova, si no se hace un manejo adecuado del DOM, la aplicación puede sentirse un poco lenta. Por ejemplo, si tenemos varias pestañas en una aplicación con Cordova y Ionic, si una pestaña tiene muchos controles, la app puede tomar hasta 3 segundos en mostrar la pestaña seleccionada por el usuario. La cantidad de controles que se tiene en la pestaña impacta proporcionalmente el tiempo que se demora la pestaña en aparecer. Este problema es más común en las tablets, las cuales tienen una pantalla grande donde caben varios controles a la vez.

3. La experiencia de usuario es homogénea con el resto de las aplicaciones de la plataforma

Cada plataforma tiene su forma de hacer las cosas. En el caso de Android, se utiliza un Floating Action Button o FAB para mostrar la acción más importante al usuario y el resto de las acciones se colocan en el Action Bar. En el caso de iOS, las acciones a ejecutar por el usuario se colocan en Navigation Bar o en el Toolbar.

El diseño de los íconos también varía cuando cambias de plataforma. En Android, los íconos que se usan dentro de la aplicación siguen el estilo del Material Design, por lo que son sencillos y planos. En iOS, los íconos siguen otro diseño donde solo se pone color en las líneas que definen el ícono. Puedes aprender más sobre los estilos de los íconos viendo la colección de íconos de Material Design de Android y las plantillas de íconos de iOS.

Cuando utilizas Cordova para desarrollar tus aplicaciones, por lo general implementas una sola interfaz de usuario para todas las plataformas. Esto quiere decir que debes tomar la decisión de si tu interfaz de usuario será neutra o si estará más apegada a los guidelines de interfaz de usuario de una plataforma en particular.

4. No requiere pruebas exhaustivas en varios dispositivos luego de realizar un cambio

No requiere pruebas exhaustivas en varios dispositivos porque el código modificado solo aplica para una plataforma. En el caso de usar Cordova, al ser la misma base de código, hacer un cambio que funcione en una plataforma puede significar insertar un bug en otra plataforma.

5. Soporte a versiones muy viejas de Android/iOS

Soporta versiones muy viejas de iOS/Android: Usando Cordova por ejemplo sólo tendremos soporte desde Android 4 (Ice Cream Sandwich – API 14) y en iOS desde versión 6.0

6. Recomendable para aplicaciones multithreading

Multithreadingen Cordova no está 100% soportado en todas las plataformas y se pueden encontrar ciertos problemas al hacer multithreading en una aplicación híbrida; por lo tanto, las aplicaciones nativas parecen una opción lógica si el multithreading es una parte esencial de la aplicación.

7. Facilidad para manejar las migraciones de la base de datos

Las migraciones son necesarias cuando uno tiene una app con base de datos en producción, en la cual los usuarios ya tienen data guardada, pero resulta que vamos a sacar una nueva versión de la app y para esta nueva versión tenemos que cambiar el esquema de la base de datos. Para poder sacar la actualización de la app sin dañar la data de los usuarios, es necesario actualizar el esquema de la base de datos con una migración. La migración permitirá modificar la base de datos que los usuarios ya están usando sin que ellos pierdan la data.

Android y iOS ya tienen ciertas prácticas establecidas para manejar las migraciones de la base de datos, pero Cordova aún no tiene una práctica establecida. Uno podría desarrollar su propio sistema de migración de bases de datos, como hizo Alin Pandichi en su blogpost; u optar por utilizar una librería como Persistence.js, la cual posee un plugin para migraciones de bases de datos, pero a la fecha – 14 de diciembre de 2015 – Persistence.js aún no tiene soporte para Cordova en su versión estable, solo existe el soporte para Cordova en la master branch.

8. Total disponibilidad de las características de la plataforma y soporte

No hay riesgo de que una funcionalidad de la plataforma no se pueda usar por falta de un plugin creado por un tercero. Si se usa el lenguaje nativo, hay certeza de que todas las funcionalidades se pueden implementar y son soportadas por Android, iOS, etc.

Conclusiones

Desarrollar aplicaciones nativas requiere desarrollar una base de código para cada plataforma: Android, iOS, Windows, Blackberry, etc. Desarrollar una aplicación híbrida, por el contrario es tener una sola base de código para todas las plataformas. A simple vista, pareciera que una aplicación híbrida es mejor si se quiere ahorrar en costos de desarrollo y mantenimiento, pero la realidad es que cada desarrollador debe evaluar si su aplicación se beneficiará del desarrollo nativo o el desarrollo híbrido.

Referencias

[1] Quora: Pros and cons of using Apache Cordova phonegap for building your iOS app

[2] Cordova vs native apps

[3] Things to consider when making ios and android apps with cordova or phonegap

[4] Slideshare: How to create one app for all platforms using phonegap

Imagen de: Android Magazin.