ubicación ubicacion segundo puedo plano localizacion desactivar buscar apple activar iphone ios ios6 cllocationmanager

ubicacion - iphone pide permiso de ubicación actual de nuevo



ubicacion segundo plano iphone (5)

Caso: para la ubicación actual, el usuario seleccionó "No permitir" en la instalación de la aplicación, así que ¿hay alguna forma de que pueda volver a preguntar por la ubicación del usuario y activar la alerta de iPhone nativo para la ubicación actual?

He visto algunas publicaciones en stackoverflow pero hay viejas, ¿hay alguna solución ahora para llamar a un nuevo SDK o alguien encontró una manera,

Mensaje referido: CLLocation pida nuevamente permiso


No creo que haya otra forma de pedir permiso de ubicación. Pero si realmente necesita la ubicación del usuario, puede mostrar una alerta indicándole que la habilite desde la configuración.


Parece que la respuesta aceptada no es completamente cierta. [CLLocationManager locationServicesEnabled] verifica si los servicios de ubicación están habilitados, como se describe en la documentación.

Devuelve un valor booleano que indica si los servicios de ubicación están habilitados en el dispositivo. El usuario puede habilitar o deshabilitar servicios de ubicación desde la aplicación Configuración al alternar el interruptor Servicios de ubicación en General. Debe verificar el valor de retorno de este método antes de comenzar las actualizaciones de ubicación para determinar si el usuario tiene servicios de ubicación habilitados para el dispositivo actual. Los servicios de ubicación avisan a los usuarios la primera vez que intentan usar información relacionada con la ubicación en una aplicación, pero no solicitan intentos posteriores. Si el usuario niega el uso de los servicios de localización e intenta iniciar las actualizaciones de ubicación de todos modos, el administrador de la ubicación informa un error a su delegado.

Si desea verificar si el usuario tiene permiso para usar su ubicación, debe verificar [CLLocationManager authorizationStatus] . Si el estado de su aplicación es kCLAuthorizationStatusDenied , significa que el usuario negó explícitamente su aplicación cuando solicitó el permiso. Puede usar esto e informar al usuario en consecuencia.


en ios8, apple ha introducido una constante UIApplicationOpenSettingsURLString, que es la ubicación de la vista de "configuración" del dispositivo.

puede codificar lo siguiente (en forma rápida) para dirigir al usuario a la vista de configuración:

switch CLLocationManager.authorizationStatus() { case .AuthorizedWhenInUse, .Restricted, .Denied: let alertController = UIAlertController( title: "Background Location Access Disabled", message: "In order to be notified, please open this app''s settings and set location access to ''Always''.", preferredStyle: .Alert) let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil) alertController.addAction(cancelAction) let openAction = UIAlertAction(title: "Open Settings", style: .Default) { (action) in if let url = NSURL(string:UIApplicationOpenSettingsURLString) { UIApplication.sharedApplication().openURL(url) } } alertController.addAction(openAction) self.presentViewController(alertController, animated: true, completion: nil) }


Lamentablemente no puedes hacer eso. Una cosa que puede hacer es pedirle al usuario que cambie la configuración de ubicación.

if (![CLLocationManager locationServicesEnabled]) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled" message:@"To re-enable, please go to Settings and turn on Location Service for this app." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; }


Esto es lo que hice teniendo en cuenta las respuestas anteriores: (esto está en MonoTouch C # pero fácilmente traducible a Swift u Obj-C)

Los siguientes solicitan permiso y luego continúan con la actualización de ubicación si se concede. De lo contrario, la próxima vez que el usuario vendrá; si los servicios de localización están deshabilitados o denegados, mostrará un mensaje para solicitar el permiso / activación con una redirección a la configuración

//Location Manager (foreground) CLLocationManager locMgr = new CLLocationManager(); locMgr.PausesLocationUpdatesAutomatically = false; if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0)) { locMgr.RequestWhenInUseAuthorization(); } if (CLLocationManager.LocationServicesEnabled && CLLocationManager.Status == CLAuthorizationStatus.AuthorizedWhenInUse) { //set the desired accuracy, in meters locMgr.DesiredAccuracy = 150; locMgr.LocationsUpdated += (object sender, CLLocationsUpdatedEventArgs e) => { Console.WriteLine(e.Locations); }; locMgr.StartUpdatingLocation(); } else if (!CLLocationManager.LocationServicesEnabled || CLLocationManager.Status == CLAuthorizationStatus.Denied) { var alert = UIAlertController.Create(NSBundle.MainBundle.LocalizedString("Location access", "Location access"), NSBundle.MainBundle.LocalizedString("Please check location", "To show your position on the map, you have to enable location services and authorize the app"), UIAlertControllerStyle.Alert); alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Cancel, null)); if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0)) { alert.AddAction(UIAlertAction.Create(NSBundle.MainBundle.LocalizedString("Go to settings", "Go to settings"), UIAlertActionStyle.Default, delegate { var url = new NSUrl(UIApplication.OpenSettingsUrlString); UIApplication.SharedApplication.OpenUrl(url); })); } PresentViewController(alert, true, null); }