ver ubicaciones ubicacion tus seguimiento recorridos localizacion historial google eliminar distancia desactivar como celular activar iphone ios cllocationmanager

iphone - ubicaciones - Cómo hacer que el usuario active los Servicios de ubicación... otra vez



ver historial de ubicaciones android (3)

Quiero tener la misma funcionalidad que la aplicación Mapa, donde se le solicita al usuario cada vez que presiona el botón ''ubicación actual'' para activar sus Servicios de ubicación si están apagados:

  • Desactivar los servicios de localización.
  • El usuario presiona el botón ''getCurrentLocation''
  • La aplicación intenta obtener la ubicación utilizando CLLocationManager
  • El usuario recibe el mensaje "Activar servicios de ubicación ..." que muestra los botones "Configuración" y "Cancelar".
  • El usuario pulsa "Cancelar"
  • El usuario presiona el botón '''' getCurrentLocation ''nuevamente
  • La aplicación intenta obtener la ubicación utilizando CLLocationManager de nuevo
  • El usuario ya no recibe el mensaje "Activar servicios de ubicación ..."

En la aplicación Mapa, el usuario recibe el mensaje "Activar servicios de ubicación ..." cada vez. ¿Cómo puedo conseguir que mi aplicación haga lo mismo? Hice usuario. Estoy usando una nueva instancia de CLLocationManager, en caso de que ese fuera el problema, pero no lo era. No puedo ver ninguna configuración que pueda afectar esto.

Si hago mi propia alerta, no puedo obtener la misma función del botón ''Configuración''. Además, no quiero que el usuario vea varias Alertas que tienen el mismo aspecto.

¿Algunas ideas?


Puede consultar la instancia de CLLocationManager compartida si el servicio de ubicación está habilitado. La forma correcta es respetar la opción de los usuarios para desactivar los servicios de ubicación.

Pero si lo desea, simplemente inicie el servicio de ubicación de todos modos y se le solicitará al usuario que lo inicie nuevamente. Si el usuario opta por las ubicaciones de solicitud, comenzará a reportarse a su delegado como de costumbre. Si el usuario, en cambio, rechaza su solicitud, obtendrá una devolución de llamada fallida al locationManager:didFailWithError: método delegado. El error tendrá un código de error de kCLErrorDenied .

Le desaconsejaría encarecidamente que lo haga, pero puede intentar iniciar el servicio nuevamente si el usuario dice que no, y se le preguntará nuevamente. Aunque la mayoría de los usuarios te odiarán por eso.


Si desea que el usuario regrese a la pantalla Servicios de ubicación en la aplicación Configuración, puede hacerlo enviándolos a una URL especial, como por ejemplo:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"prefs:root=LOCATION_SERVICES"]];


Nuevo en iOS 8 hay una constante llamada UIApplicationOpenSettingsURLString .

Del documento "Novedades en iOS" debajo de UIKit está la línea:

Puede llevar al usuario directamente a la configuración relacionada con la aplicación en la aplicación Configuración. Pase la constante UIApplicationOpenSettingsURLString al método openURL: de la clase UIApplication.

De la documentation de Apple:

UIApplicationOpenSettingsURLString

Se utiliza para crear una URL que puede pasar al método openURL :. Cuando abre la URL creada a partir de esta cadena, el sistema inicia la aplicación Configuración y muestra la configuración personalizada de la aplicación, si la tiene.

Puede pasar esto al método openURL: UIApplication. Podría parecer algo como:

NSURL *settings = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; if ([[UIApplication sharedApplication] canOpenURL:settings]) [[UIApplication sharedApplication] openURL:settings];