ContentSync¿Os imagináis que pudiésemos subir actualizaciones de nuestras aplicaciones sin necesidad de pasar el engorro de la store? Pues desde hace relativamente poco ya es posible en las aplicaciones multiplataforma gracias al plugin ContentSync de Phonegap. Si hace algunas semanas hablábamos de lo importante que es hacer actualizaciones de tu app, hoy hacemos un repaso de las ventajas que conlleva, las limitaciones y, por último, los detalles técnicos de cómo funciona internamente este nuevo sistema. 

Ventajas

La ventaja principal es que nuestra aplicación no tendrá que pasar por los procesos de revisión y publicación de las stores. Esto supone un ahorro de tiempo porque, como sabéis y dependiendo de la plataforma, esta revisión puede durar unas horas (Android) o hasta días (iOS y Windows Phone). Por otra parte, no debemos preocuparnos por si nos rechazan la actualización.

Otra ventaja es que este sistema permite que las actualizaciones sean obligatorias, algo muy útil en situaciones en las que cambia la forma de comunicarse con el backend, por ejemplo; de modo que todos los dispositivos están siempre actualizados a la última versión. Incluso, si interesa y siempre de forma transparente al usuario, éste no tendrá ni por qué saber que su aplicación se ha actualizado (si el cambio es menor).

Pero las ventajas no terminan aquí. Siendo creativos podemos encontrar más:

  • Es mucho más fácil controlar cuándo hay una actualización disponible y poder avisar al usuario de algún modo no muy intrusivo
  • Que el usuario tenga la opción de descargarse la nueva actualización para poder realizar un test A/B
  • Que los mismos usuarios puedan escoger participar en versiones Beta (en pruebas) de la app

Limitaciones

Aunque este sistema tiene muchas ventajas, también tiene un par de limitaciones. En primer lugar no se pueden incorporar nuevas funcionalidades que requieran un acceso nativo al dispositivo. Por ejemplo, si la aplicación no usaba la cámara y en la nueva actualización se requiere, tendríamos que subirla por la store. Para dejar este punto un poco más claro, a continuación os dejamos algunos ejemplos de casos en que se podría actualizar sin pasar por la store sin ningún problema:

  • Cambiar la navegación de la app: añadir, quitar o modificar pantallas
  • Corrección de errores
  • Ajustes de diseño
  • Contenido de la aplicación en general
  • Traducciones
  • Siguiendo con el ejemplo, si ya se usaba la cámara en versiones anteriores, podríamos añadir otro botón que haga otra foto o vídeo.

La otra limitación es sobre todo para las aplicaciones que funcionan offline; se necesita algún servidor que hostee los ficheros de las actualizaciones, ya que la aplicación debería poder comprobar si hay nuevas actualizaciones y descargarlas de este servidor. A las aplicaciones que cuentan con un backend esta limitación prácticamente no les afecta, pues podrían aprovecharlo para guardar y servir las actualizaciones sin problema.

Funcionamiento técnico

Internamente, ContentSync aprovecha que las apps en Cross están programadas en HTML5, CSS y JS para poder aplicar estas actualizaciones. Inicialmente se copia el código de la aplicación en una carpeta privada del dispositivo y se arranca desde ahí (por lo que el funcionamiento es el normal).

El siguiente paso es comprobar nuevas actualizaciones y descargarlas, algo que se puede programar desde el mismo Javascript. Por ejemplo, se puede hacer que lo compruebe y/o descargue siempre que arranque la aplicación, o cuando el usuario de la orden mediante un botón. Aquí ContentSync se descargaría el fichero de la actualización (que es un fichero comprimido en zip) y lo descomprimiría encima de la carpeta privada que contiene la app, de modo que al volver a arrancar la aplicación, ésta ya estará actualizada. Esto a su vez permite que los ficheros de actualización sean incrementales, es decir, que sólo contengan aquellos ficheros que se han modificado. Esto supone un ahorro de espacio, tamaño y tiempo de descarga, dado que si por ejemplo las imágenes no cambian, no hay que volverlas a descargar.

A partir de aquí es fácil entender por qué no se pueden añadir funcionalidades nuevas que toquen partes nativas: sólo se puede actualizar el código HTML5/CSS/JS (junto con sus imágenes, fuentes, etc.). Las partes nativas (las que se acceden mediante los plugins de Phonegap) no se pueden actualizar, ya que van compiladas dentro del fichero apk/ipa/xap. Es también por esto que si, en una versión antigua ya tenemos, por ejemplo el plugin de la cámara, podemos hacer una actualización que use la cámara de otro modo con ContentSync, porque el plugin de la cámara ya lo tenemos instalado en la aplicación.

Los contratos de las stores actualmente permiten este tipo de actualizaciones. El es más estricto, que es el de Apple (iOS), tiene una cláusula que prohíbe modificar el código de la aplicación sin pasar por la store, excepto si el código se ejecuta desde UIWebKit, que es justamente el componente que utiliza Phonegap/Cordova para ejecutar nuestra aplicación. De este modo no hay ningún problema en absoluto.

Como conclusión, vemos que se trata de una herramienta muy potente, con un buen número de ventajas y posibilidades, aunque tenga un par de limitaciones. De todos modos, de bien seguro que marca una buena ventaja

en cuanto a decidirse si hacer una aplicación en cross (multiplataforma) o nativa, pues es una funcionalidad que este tipo de aplicaciones no pueden implementar por el momento.

Autor del post: Víctor Oliva.

Recommended Posts

Leave a Comment