62. ¿Por qué debemos desarrollar apps con modo offline?

El modo offline trata de ofrecer una experiencia alternativa cuando el dispositivo no tiene conexión a internet o se quieren ahorrar datos móviles. Básicamente es la respuesta que la aplicación muestra cuando no estamos, o no queremos, estar conectados a internet.

Es importante tener en cuenta que en una aplicación no todo puede ser offline. Técnicamente no sería posible hacerlo, y si lo fuera las aplicaciones ocuparían mucho más espacio del que ocupan hoy en día. Simplemente tenemos que procurar ofrecer un modo offline en aquellas características que podamos y tengan sentido.

¿Por qué es importante el modo offline?

En primer lugar tenemos que tener en cuenta que en cualquier país, por avanzado que sea, podemos encontrarnos situaciones en las que nuestro dispositivo pierda la conexión a internet. Es algo más que habitual. Viajar en avión, ir en metro, entrar a un parking subterráneo o estar en un lugar rural son situaciones que nos pueden llegar a no tener una buena conexión en el móvil.

Por otro lado, por lo menos a día de hoy, la inmensa mayoría de tarifas de datos son limitadas. Esto quiere decir que estamos pagando por lo que consumimos y que cuando lo acabemos nos vamos a quedar sin conexión. Con esto cobra importancia el hecho de ahorrar datos que está totalmente relacionado con el modo offline.

Finalmente hay que saber que no todos los países son iguales en cuanto a conexiones móviles. Existen un gran número de países donde las conexiones son super limitadas y los datos móviles se usan con mucha cautela. De hecho, hay lugares donde las personas desactivan los datos móviles durante gran parte del día con el fin de gastar el mínimo posible. También hay que tener en cuenta que existen aún muchas personas que no tienen contratada una tarifa de datos móviles y se van conectando únicamente mediante WIFI.

Sobre todo si nuestra app va dirigida a nivel mundial tenemos que tener en cuenta todas estas situaciones. Un móvil no es un ordenador. En un ordenador típicamente estamos al lado del router y la conexión es generalmente estable y buena. En un móvil es todo lo contrario y esta diferencia se hace más grande en según que países.

Si queremos ofrecer una buena experiencia de usuario cuando el dispositivo se quede sin conexión, tenemos que pensar en hacer algo más que dejar la pantalla en blanco o una barra de progreso animándose sin fin 🙂

¿Cómo implementar el modo offline en las aplicaciones?

Hay diferentes formas de implementar el modo offline en las aplicaciones. Todo dependerá del tipo de aplicación que tengamos y qué experiencia queramos ofrecer. Básicamente podríamos decir que hay dos técnicas:

1. Caching

El caching trata de memorizar las últimas llamadas al servidor. Básicamente nos permite mostrar la última información conocida cuando no tenemos conexión a internet.

Un ejemplo donde tendría sentido usarlo sería con una aplicación del tiempo. Si al abrir la aplicación tenemos conexión a internet podemos mostrar la información directamente del servidor. En el caso de que no tengamos conexión, lo que podemos hacer es mostrar la última información conocida. Sin duda esta es mejor opción que dejar la interfaz completamente en blanco.

Para implementarlo tenemos que tener una base de datos local en el servidor. Cada vez que solicitemos información nueva al servidor guardaremos el resultado en nuestra base de datos. De esta manera, si no tenemos acceso a internet, siempre podremos obtener la información que tenemos en nuestra base de datos local.

La gran ventaja de esta técnica es que es relativamente sencilla de implementar. Por otro lado, la gran desventaja es que únicamente nos servirá para mostrar información que viene del servidor. No podremos ofrecer ninguna experiencia offline para acciones que haga el usuario como veremos a continuación.

2. Sincronización

La sincronización es la otra técnica que nos permite ofrecer una experiencia offline. En este caso se trata de ir guardando todas las acciones que lleva a cabo el usuario de forma local y después sincronizar los cambios con el servidor.

El ejemplo más claro de esta técnica es Google Docs. Con Google Docs podemos editar documentos de texto en nuestro móvil sin necesidad de estar conectados a internet. Todos los cambios que hagamos son enviados al servidor más tarde cuando recuperemos la conexión. Nosotros no tenemos que preocuparnos de si tenemos o no internet para utilizar la aplicación. Es la propia app la que se encarga de gestionarlo.

A nivel técnico la complejidad es un poco mayor. Para empezar debemos tener también una base de datos local, que en cierto modo es una copia de la del servidor. A partir de aquí vamos guardando todas las acciones del usuario en la base de datos local y las marcamos como no sincronizadas. Finalmente, cuando recuperamos la conexión, lo que hacemos es un volcado de todos los datos para actualizar el servidor.

Las ventaja de esta técnica es clara, ofrecemos una mejor experiencia. El usuario no tiene que preocuparse de la conexión. La propia aplicación es la que se ocupa de ello. Por otro lado, la gran desventaja es que técnicamente es bastante más complicado de llevar a cabo.

Conclusión

En resumen, ofrecer una experiencia offline en las aplicaciones móviles es algo vital y que cambia radicalmente la experiencia de usuario.

Los móviles, como su propio nombre indica, son dispositivos móviles y las conexiones no son siempre las mejores. Ciertos países tienen conexiones lentas, en cualquier país puedes estar en lugares donde no puedas acceder a internet y además tenemos la limitación de datos móviles en la mayoría de tarifas.

Para ofrecer una alternativa a estas situaciones tenemos dos técnicas : caching y sincronización. Una más simple y otra más compleja. Ambas nos sirven para solucionar en cierto nivel este problema.

Como siempre sabes que puedes seguir y recomendar este podcast a través de iOS y Android. También puedes ponerte en contacto conmigo a través de mi formulario de contacto para cualquier duda o sugerencia. ¡Nos escuchamos el miércoles que viene a las 8AM!