Estoy buscando una manera de obtener una actualización de ubicación en segundo plano cada n minutos en mi aplicación iOS. Estoy usando iOS 4.3 y la solución debería funcionar para iPhone sin jailbreak.
Intenté / consideré las siguientes opciones:
CLLocationManager startUpdatingLocation/startMonitoringSignificantLocationChanges
: Esto funciona en segundo plano como se esperaba, en función de las propiedades configuradas, pero parece que no es posible forzarlo a actualizar la ubicación cada n minutosNSTimer
: Funciona cuando la aplicación se ejecuta en primer plano, pero no parece estar diseñada para tareas en segundo plano- Notificaciones locales: las notificaciones locales se pueden programar cada n minutos, pero no es posible ejecutar algún código para obtener la ubicación actual (sin que el usuario tenga que iniciar la aplicación a través de la notificación). Este enfoque tampoco parece ser un enfoque limpio, ya que esto no es para lo que deberían usarse las notificaciones.
UIApplication:beginBackgroundTaskWithExpirationHandler
: Según tengo entendido, esto debería usarse para terminar un trabajo en segundo plano (también limitado en el tiempo) cuando una aplicación se mueve a segundo plano en lugar de implementar procesos en segundo plano de "ejecución prolongada".
¿Cómo puedo implementar estas actualizaciones periódicas de ubicación en segundo plano?