¿Cuáles son las mejores prácticas para sincronizar datos entre una aplicación iOS y una aplicación web?

Como parte del equipo, realicé muchos proyectos que incluían la sincronización de datos, por lo que debería ser competente para responder esta pregunta.

La sincronización de datos es un concepto bastante amplio y hay demasiado para discutir. Cubre una gama de enfoques diferentes con sus ventajas y desventajas. Aquí hay una de las posibles clasificaciones basadas en dos perspectivas: Sincrónica / Asincrónica, Cliente / Servidor / Punto a punto. La implementación de sincronización depende en gran medida de estos factores, la complejidad del modelo de datos, la cantidad de datos transferidos y almacenados, y otros requisitos. Entonces, en cada caso particular, la elección debe ser a favor de la implementación más simple que cumpla con los requisitos de la aplicación.

Aprovechamos nuestro conocimiento en este artículo, que creo que podría ser muy útil para todos los interesados ​​en el tema => Sincronización de datos en aplicaciones iOS basadas en datos básicos

1. Compresión
Para tratar con el tamaño de los datos que envió entre el servidor / cliente. En términos generales, si usa JSON, le gustaría tener algún tipo de compresión.
Consejo : gzip es tu amigo

2. Caché
Cada vez que se realiza un cambio en los datos del cliente, no se ejecuta el servidor (a menos que sea realmente crítico para su aplicación). Apila los cambios y, en un intervalo dado, activa el método de sincronización.
Consejo : En el cliente, puede suscribirse a los cambios realizados en un NSManagedObjectContext.

3. Algoritmo
Los comandos que envía al servidor agregan, actualizan o eliminan datos. Puede hacer esto en solicitudes separadas, o puede hacer esto en una solicitud.
Consejo : hazlo en una sola solicitud. Tómese el tiempo para comprender cómo sincronizar solo los datos necesarios mediante el uso de marcas de tiempo.

Encontré un excelente par de artículos que explican cómo sincronizar CoreData con un servicio web http://www.raywenderlich.com/159

La arquitectura es un factor importante para dicha aplicación. Diseñe de tal manera que los almacenes de datos sean solo uno. El middleware debería exponer el servicio de esa interfaz con ios y web.