¿Cómo funciona el acceso sin conexión para aplicaciones móviles?

El soporte móvil en una aplicación móvil es un tema complejo. Puede aportar valor comercial en ciertos escenarios, pero también complica el desarrollo y aumenta significativamente los costos para toda la funcionalidad futura. Los mismos problemas ocurren con el soporte fuera de línea móvil. Los principales problemas son la sincronización y la duplicación de la lógica empresarial.

El proceso básico es que, cuando la aplicación está en línea, interactúa con el servidor a través de llamadas API y luego almacena la información en una base de datos local.

Hay dos opciones para la base de datos local en el caso de iOS: Core Data nativo (que se basa en SQLite) y otras bases de datos de terceros como Couchbase. Una vez que se guardan los datos, si el dispositivo se desconecta, ocurren los siguientes problemas:
– cualquier cambio realizado en los datos locales debe ser rastreado para que, cuando el dispositivo vuelva a estar en línea, pueda enviarse al servidor;
– debido a que no hay conexión a Internet, la aplicación ya no puede llegar al servidor para determinar cómo actuar en ciertas condiciones; por lo tanto, la aplicación debe poder responder sin conexión a preguntas como “¿el usuario tiene permiso para eliminar este contacto”?
– esto significa que la lógica de negocios, las reglas que debe respetar el sistema, ahora deben codificarse en el servidor, así como en el cliente.

Ahora imagine una gran cantidad de dispositivos que funcionan con conexión intermitente al servidor; un usuario puede cambiar un contacto en su aplicación, mientras que otro lo elimina. Ambos están fuera de línea; cuando se conectan (no se puede predecir el orden), el algoritmo debe saber cómo lidiar con situaciones “conflictivas”, como intentar eliminar un contacto que ya no existe.

Existen diferentes estrategias para abordar este problema, pero, básicamente, todas tienen ventajas y desventajas. Dos posibles soluciones serían las siguientes:
(A) traer lógica de negocios en el dispositivo; desarrolle su propia solución almacenando datos en datos centrales e implementando su propio algoritmo de sincronización
(B) trabaje con una base de datos de terceros que gestione el proceso de sincronización por usted; Las dos opciones posibles aquí serían Couchbase Lite con Coucbase Sync Gateway o Firebase.

En general, lee / escribe en el almacenamiento del dispositivo hasta que vuelva a estar en línea nuevamente y luego sincronice local => server. En iOS hay una clase llamada accesibilidad que le dice el tipo de conexión que tiene actualmente … por ejemplo, wifi, 3g, ninguno.