Sincronización automática con la database central

He desarrollado una aplicación. Mi aplicación recibe comentarios de los usuarios. Cuando la networking no está disponible, esos datos se guardan en la location local. Pero, una vez que la networking esté disponible, se sincronizará automáticamente con la database central.

Pero, tengo un problema aquí. Si guardo la database y envío mi request a segundo plano, una vez que la networking esté disponible, tiene que hacer automáticamente esta synchronization con la database central. ¿Como hacer eso?

Estoy usando la class Reachability para verificar la disponibilidad de la networking.

En la actualidad, no hay forma de que su aplicación "despierte" cuando la networking esté disponible. Si el usuario abandona su aplicación sin una connection de networking, no puede hacer nada hasta que abran voluntariamente su aplicación.

Sin embargo, puede pedirles que lo hagan usando UILocalNotification. Si su aplicación está saliendo y tiene algunos datos esperando ser cargados, puede progtwigr una notificación para disparar en 4 horas (o cualquier cantidad de time que tenga sentido).

Si el usuario abre la aplicación antes de la hora de notificación y puede upload los datos, puede cancelar la notificación y nadie sabrá que estaba progtwigda.

Si el usuario no abre la aplicación, aparecerá la notificación y dice algo así como: "Usted tiene datos en su teléfono que no ha cargado en un time. Conéctese a Internet e inicie MyAwesomeApp para sincronizar sus datos".

No puedes hacerlo en iPhone. Su aplicación deja de existir en unos pocos segundos (una vez que la aplicación se mueve al background).

Creo que son 5 segundos para todas las aplicaciones, 10 minutos para algunas aplicaciones que han solicitado más time de background.

PS: A less que marques tu aplicación como una aplicación de navigation o música, que puede permanecer en segundo plano, teóricamente, para siempre. Pero dudo que una aplicación de comentarios pueda get la aprobación en la tienda de aplicaciones con dichos permissions.

Mantenga una columna adicional en su database guardada que marca la carga exitosa de sus datos en su server. Configura esto cuando se escriben los datos, pero aún no se cargan. Cuando se cargue correctamente, borre el valor. Puede verificar este valor cuando su aplicación llegue al primer plano y hacer que cargue los datos que no se hayan despejado esta columna. Mientras su aplicación se está ejecutando, puede configurar un timer para un intervalo apropiado para volver a verificar la accesibilidad y, si tiene éxito, intente cargarlo. Solo borre su bandera cuando los datos se escriban correctamente, y asegúrese de que su server no intente procesar una carga parcial (piense en alguien que intenta hacer esto en un metro o tren, entrando y saliendo de la conectividad).