ios swift background background-process

ios background fetch



swift/ios actualizaciĆ³n de datos de la aplicaciĆ³n cuando en el fondo (3)

  1. Puede usar una notificación local que se puede presentar desde el fondo en caso de que se cumpla su condición.

  2. Correcto, iOS eventualmente cerrará el proceso en segundo plano, no puede hacer cumplir la actividad de fondo continua. Utilice la propiedad backgroundTimeRemaining para comprobar cuánto tiempo le queda a su aplicación e intente manejarla de la forma más elegante posible llamando a endBackgroundTask para que iOS no fuerce la endBackgroundTask su aplicación.

Como solución, podría pensar en usar notificaciones remotas con content-available : YES , que ejecuta el programa didReceiveRemoteNotification

Estoy escribiendo una aplicación iOS / Swift que lee datos de un servicio REST cada X minutos y actualiza la IU según corresponda.

Ahora me gustaría que cuando la aplicación se ponga en segundo plano, una tarea siga siendo invocada a intervalos de X minutos leyendo desde el servicio REST y, en caso de que los datos recién leídos satisfagan una condición dada, muestre una notificación solicitando al usuario que traiga el aplicación de nuevo al primer plano.

En mis búsquedas, he leído que durante el evento applicationDidEnterBackground , debería comenzar una tarea con beginBackgroundTaskWithExpirationHandler .

El problema es que, si lo he entendido correctamente, esto permite un máximo de 10/15 minutos, luego de lo cual la aplicación finaliza si la tarea no se detiene con endBackgroundUpdateTask , aunque quiero que la tarea siga sondeando el servicio indefinidamente (al menos hasta que el usuario lo desactive desde la configuración de la aplicación)

Mi pregunta es:

¿Cómo se lleva a cabo este tipo de funcionalidad normalmente? ¿Existen algunas soluciones comunes o mejores prácticas para la solución de tal problema?


Echa un vistazo a Parse.com. Su almacén de datos local es una abstracción de lo que intentas lograr. Por cierto, es realmente necesario actualizar en segundo plano. Si la llamada es relativamente rápida, no hay necesidad de actualizar hasta que el usuario abra la aplicación. Procesos de fondo como ese, usar la red pueden consumir mucha batería cuando el usuario no está en un Wifi. ¡Así que considere el caso de uso con cuidado!


Utilice la función de obtención de fondo de iOS donde puede especificar el intervalo de recuperación de fondo mínimo. Pero el intervalo real entre la invocación sucesiva de su código será determinado por el marco de iOS. Para obtener más información, consulte este enlace: http://code.tutsplus.com/tutorials/ios-7-sdk-working-with-background-fetch--mobile-20520

Utilizo este enfoque en mi aplicación y creo que es una forma preferida de hacerlo.