iphone - olvide - CLLocation pida nuevamente permiso
ios 12 (2)
Nueva respuesta: ahora en iOS 8 PUEDE abrir programáticamente la aplicación de configuración del dispositivo:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
Si está soportando versiones anteriores de iOS y quiere asegurarse de que esto se pueda manejar, haga esto:
if (&UIApplicationOpenSettingsURLString != NULL) {
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
}
else {
//Earlier iOS version
}
Respuesta anterior: no hay manera de que sepa forzar la ventana emergente nativa para aparecer (y permitir que el usuario salte a la página de configuración).
Puede utilizar el siguiente método para determinar si el usuario ha permitido servicios de ubicación para su aplicación: CLLocationManager:
+(CLAuthorizationStatus)authorizationStatus
También puede averiguar si los servicios de localización están globalmente habilitados a nivel de dispositivo o no: CLLocationManager:
+(BOOL)locationServicesEnabled
Actualmente, mi aplicación solo pide una vez permiso para usar la ubicación actual. Si el usuario no permite, no se le preguntará nuevamente a menos que restablezca la advertencia de ubicación en la configuración general. Me gustaría darle al usuario una oportunidad desde dentro de la aplicación para otorgar este permiso más adelante. En otras palabras, el cuadro de diálogo debería aparecer nuevamente si presiona un botón determinado. es posible?
Gracias por su consejo.
[CLLocationManager locationServicesEnabled]
solo le informa si los servicios de ubicación están habilitados en el dispositivo.
de acuerdo con este documento.
[CLLocationManager authorizationStatus]
devolverá uno de estos
typedef enum {
kCLAuthorizationStatusNotDetermined = 0,
kCLAuthorizationStatusRestricted,
kCLAuthorizationStatusDenied,
kCLAuthorizationStatusAuthorized
} CLAuthorizationStatus;
si el resultado es kCLAuthorizationStatusDenied
podría decirle al usuario que permita el uso de los servicios de ubicación enviándolo a settings.app