CLLocationManager mientras la aplicación está en estado de background

Mi pregunta es: ¿Continúa ejecutándose CLLocationManager mientras mi aplicación está inactiva?

Sí, si CLLocationManager primero se llama método startUpdatingLocation , y en el file AppName-Info.plist se agrega Requinetworking Background Modes -> App registers for location updates

Sí, podría hacerlo. Tiene dos opciones para manejar events de service de location cuando su aplicación está suspendida, que puede leerse en el artículo: Obtener la location actual del usuario . Como se ha señalado:

Hay dos services diferentes que puede usar para get la location actual del usuario:

  • El service de location estándar es una solución configurable de propósito general y es compatible con todas las versiones de iOS.
  • El service de location de cambio significativo ofrece un service de location de baja potencia para dispositivos con radios celulares. Este service solo está disponible en iOS 4.0 y posteriores y también puede activar una aplicación suspendida o no ejecutada.

Además, como se indica al final de este artículo en la sección "Cómo get events de location en segundo plano":

  • Si su aplicación necesita actualizaciones de location entregadas si la aplicación está en primer plano o en segundo plano, hay varias opciones para hacerlo. La opción preferida es utilizar el service de cambio de location significativo para activar su aplicación en los momentos apropiados para manejar nuevos events. Sin embargo, si su aplicación necesita usar el service de location estándar, puede declarar que su aplicación necesita services de location en segundo plano.
  • Una request debe solicitar services de localización de background solo si la ausencia de esos services perjudica su capacidad de operar. Además, cualquier aplicación que solicite services de location de background debe usar esos services para proporcionar un beneficio tangible al usuario. Por ejemplo, una aplicación de navigation paso a paso sería un posible candidato para los services de localización en segundo plano debido a su necesidad de rastrear la position del usuario e informar cuándo es el momento de hacer el siguiente turno.

Hay algunas sutilezas importantes con esto (a partir de iOS 7.1):

  • El modo de background de Actualización de location NO debe utilizarse si solo está buscando cambios significativos y events de input / salida de región. Seguirá recibiendo estos events incluso si la bandera de background NO está configurada, y ahorrará una gran cantidad de batería al mismo time.
  • Si hace lo anterior, debe tener en count el time limitado de background permitido. Si no cuida las requestes de networking, etc. en el time permitido, fallará la transacción de la networking.
  • SÓLO debes usar el modo de background de location si necesitas usar un seguimiento detallado de la location (por ejemplo, -startUpdatingLocation), en cuyo caso este modo de background mantendrá tu aplicación despierta.
  • Usar el modo de background de location cuando no obtienes una location detallada molestará a tus usuarios y es posible que rechaces tu aplicación durante el process de revisión (dependiendo de cómo uses la location a lo largo de tu aplicación).
  • Su aplicación puede ser eliminada en cualquier momento por el sistema operativo si no tiene el modo de location de background configurado, por lo que deberá asegurarse de reiniciar correctamente su instancia de CLLocationManager en applicationDidFinishLaunching o applicationWillFinishLaunching para get la actualización updateLocation o didEnter / ExitRegion delegate call. Simplemente porque la location despierta tu aplicación con una actualización de location, NO recrear mágicamente tu CLLocationManager sin que lo programes.

¡Espero que ayude!

Para deshabilitar CLLocationManager mientras la aplicación está en modo de background, simplemente no debe agregar los "Registros de aplicaciones para actualizaciones de location" en la key "Modos de background necesarios" del file info.plist.

Sugiero utilizar el service de location de cambio significativo en lugar del service de location estándar siempre que sea posible, para preservar la batería del dispositivo.