PhoneGap o no PhoneGap

En este blog he escrito unas cuantas veces sobre PhoneGap/Cordova como una herramienta que nos permite desarrollar y empaquetar aplicaciones desarrolladas con HTML5/JS/CSS para dispositivos móviles (smartphones y tablets, fundamentalmente).

Recientemente he estado desarrollando unas pruebas de concepto para una aplicación que debe ejecutarse en terminales iOS y Android y trabaja completamente online (siempre conectada) y después de darle unas cuantas vueltas, he acabado por usar directamente un navegador y pasar de PhoneGap.

A la hora de decantarse por una aproximación u otra hay que tener en cuenta distintos factores que dependen en gran medida del tipo de aplicación que estemos desarrollando.

Distribución, despliegue y actualizaciones

Una ventaja clara de utiliza PhoneGap/Cordova es poder distribuir la aplicación a través de las tiendas de aplicaciones de cada plataforma. Si lo que estamos desarrollando es una aplicación orientada al usuario final, con unas expectativas de distribución masiva, y además queremos cobrar fácilmente por ella, PhoneGap nos ofrece una forma fácil de aprovechar el canal de distribución montado por cada fabricante.

A cambio, con PhoneGap será necesario descargar, instalar y mantener la aplicación actualizada en todos los dispositivos que se vayan a usar. Esto puede ser más o menos costoso dependiendo del parque de dispositivos y la necesidad de mantener las versiones homogeneizadas en todo el parque.

No hay que olvidar que tendremos una dependencia sobre las tiendas de aplicaciones a la hora de publicar la aplicación y sus actualizaciones, estando sometidos a procesos de certificación que nos pueden restar agilidad a la hora de poner en producción nuevas versiones.

Usando PhoneGap nos obligamos a «desarrollar» paquetes especializados de instalación para todas las plataformas que queramos soportar. Es cierto que PhoneGap se encarga del 99% en cuanto a código, pero dentro del desarrollo de la aplicación hay más tareas que escribir código, y hace falta montar y mantener procesos automatizados que nos permitan crear y versionar los paquetes para cada plataforma. Puede que no sea mucho trabajo, pero no deja de ser un trabajo adicional al fin y al cabo.

En el caso de una aplicación web «pura», accedida desde un navegador, todos estos problemas quedan resueltos porque no tendrás que generar paquetes de instalación y los usuarios siempre estarán ejecutando la última versión de la aplicación, aunque será necesario sacrificar la posibilidad de aprovechar el canal de distribución de las tiendas de aplicaciones de los distintos fabricantes de dispositivos.

Experiencia de usuario y funcionalidades avanzadas

Partiendo de la base que podemos proporcionar la misma usabilidad en la aplicación independientemente de que la empaquetemos o no con PhoneGap (al fin y al cabo no dejan de ser las mismas páginas HTML y el mismo código Javascript), hay algunas diferencias entre empaquetar la aplicación y no hacerlo.

La experiencia de uso con PhoneGap puede ser más sencilla para el usuario menos avanzado, puesto que una vez instalada la aplicación tendrá creado el acceso directo para ejecutarla sin necesidad de recordar URLs o añadirla a favoritos.

Con PhoneGap también puedes conseguir una experiencia más «inmersiva», en cuanto a que puedes ocultar toda la parte del navegador que no necesites, aunque en iOS puedes lograr algo parecido usando las etiquetas meta adecuadas.

Además, PhoneGap nos permite desarrollar plugins para acceder a características específicas de cada dispositivo que no siempre son accesibles desde una página web, como por ejemplo interactuar con servicios instalados en el dispositivo, leer datos de la agenda, etc.

En este sentido, la única ventaja que tendríamos al no usar PhoneGap es que le evitamos al usuario tener que descargar y actualizar la aplicación, como comentábamos en el punto anterior.

Trabajo desconectado

Si la aplicación necesita trabajar de forma desconectada, PhoneGap ofrece varias alternativas para almacenar datos de forma local (WebSQL, FileSystem…).

Aunque podemos usar algunas de estas alternativas desde una aplicación web normal, resulta algo más frágil porque el usuario podría borrar accidentalmente la información desde la configuración del navegador. Además esa información no estaría disponible si el usuario utiliza varios navegadores distintos (aunque sea en el mismo dispositivo).

Con PhoneGap las páginas pueden (suelen) ir incluidas en el propio paquete de instalación, por lo que será posible acceder a la aplicación incluso estando desconectado, cosa que sería imposible usando una aplicación web pura.

Entonces, ¿qué uso?

Viendo lo que hemos comentado hasta ahora, parece claro que PhoneGap ofrece muchas ventajas frente a una aplicación web pura, pero la realidad es que, dependiendo del tipo de aplicación, esas ventajas pueden no ser muy útiles y acabar pesando más los inconvenientes.

Hay entornos en los que se necesita una aplicación para trabajar en tiempo real contra un servidor central. Esto es muy frecuente en ERPs, puntos de venta, aplicaciones de gestión de almacén, y aplicaciones corporativas de diversa índole.

En esos casos, la agilidad de no depender la tienda de aplicaciones de turno para desplegar nuevas versiones puede ser determinante.

Si necesitas trabajar desconectado, acceder a funciones específicas del dispositivo no disponibles de HTML/JS, o quieres vender tu aplicación al público masivo, sin duda PhoneGap es la mejor opción.

Lo importante es no dar nada por sentado y dedicar algo de tiempo a analizar cada caso antes de lanzarse a la utilizar la solución de moda.