2012-05-21 12 views

Respuesta

2

Sí, podría. Tiene dos opciones para gestionar los eventos del servicio de ubicación cuando se suspende su aplicación, que se puede leer en el artículo: Getting the User’s Current Location. Como se ha señalado:

Hay dos servicios diferentes que puede utilizar para obtener la ubicación actual del usuario:

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

Además, como se señaló en la parte inferior de este artículo en la sección "Obtención Ubicación Eventos en el fondo":

  • Si la aplicación necesita actualizaciones de ubicación entregado si la aplicación está en el primer plano o fondo, hay múltiples opciones para hacerlo. La opción preferida es utilizar el servicio de cambio de ubicación significativo para activar su aplicación en los momentos adecuados para manejar nuevos eventos. Sin embargo, si su aplicación necesita usar el servicio de ubicación estándar, puede declarar que su aplicación necesita servicios de ubicación en segundo plano.
  • Una aplicación debe solicitar servicios de ubicación en segundo plano solo si la ausencia de esos servicios perjudicaría su capacidad para operar. Además, cualquier aplicación que solicite servicios de localización en segundo plano debe usar esos servicios para proporcionar un beneficio tangible al usuario. Por ejemplo, una aplicación de navegación paso a paso sería un candidato probable para los servicios de localización en segundo plano debido a su necesidad de rastrear la posición del usuario e informar cuándo es el momento de hacer el siguiente giro.
9

Sí, si CLLocationManager es el primer llamado startUpdatingLocation método, y en el archivo AppName-Info.plist se añade Required Background Modes -> App registers for location updates

+0

De forma predeterminada, CLLocationManager se ejecuta mientras la aplicación está inactiva? ¿Es verdad? – Bojan

+1

No, la aplicación debe estar registrada para el modo en segundo plano para actualizaciones de ubicación, el CLLocationManager debe iniciarse para actualizaciones de ubicación o actualizaciones de ubicación significativas y cuando ingresa en segundo plano CLLocationManager continúa actualizando la ubicación ... – graver

+1

¿Cómo puedo deshabilitar CLLocationManager mientras la aplicación está en modo de fondo? – Bojan

1

Para desactivar CLLocationManager mientras la aplicación está en modo apaisada simplemente no se debe agregar los "registros de la aplicación para actualizaciones de ubicación " en el " Modos de fondo necesarios " clave del archivo info.plist.

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

2

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

  • El Lugar modo de actualización de fondo no debe utilizarse si usted está buscando para el cambio y la región significativa introducir eventos/salida. Seguirá recibiendo estos eventos incluso si la bandera de fondo NO está configurada, y ahorrará mucha batería al mismo tiempo.
  • Si hace lo anterior, debe tener en cuenta el tiempo de fondo permitido limitado. Si no te ocupas de cerrar las solicitudes de red, etc.en el tiempo permitido, se producirán fallas de transacciones de red.
  • SÓLO debe utilizar el modo de fondo de ubicación si necesita usar el seguimiento de ubicación detallado (por ejemplo, -startUpdatingLocation), en cuyo caso este modo de fondo mantendrá su aplicación activada.
  • Usar el modo de fondo de ubicación cuando no se obtiene una ubicación detallada molestará a los usuarios y puede hacer que se rechace tu aplicación durante el proceso de revisión (dependiendo de cómo uses la ubicación en toda la aplicación).
  • Su aplicación puede ser eliminada en cualquier momento por el sistema operativo si no tiene configurado el modo de ubicación en segundo plano, por lo que deberá asegurarse de reinicializar adecuadamente su instancia de CLLocationManager en applicationDidFinishLaunching o applicationWillFinishLaunching para obtener la actualización subsiguiente. o didEnter/ExitRegion delegar llamada. ¡Solo porque la ubicación despierta su aplicación con una actualización de ubicación, NO recrea mágicamente su CLLocationManager sin que usted lo programe!

Espero que ayude!

+0

# 5 es muy importante: proporcione al sistema una forma de volver a crear cualquier objeto implementado 'CLLocationManagerDelegate' o no obtendrá las devoluciones de llamadas, incluso si el sistema vuelve a ejecutar la aplicación – bcattle

Cuestiones relacionadas