IOS 9 Error Domain = kCLErrorDomain Code = 0 “(null)”

El siguiente código debe obtener la ubicación actual. Pero el error anterior se genera. La función didUpdateLocations nunca se llama.

Ejecutando esto en un dispositivo (iPhone 5s) iOS 9.1. Info.plist tiene las capacidades requeridas del dispositivo y privacidad: descripción del uso de la ubicación configurada como se muestra en la imagen adjunta. ¡Por favor ayuda!

let locationManager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() locationManager.delegate = self locationManager.requestAlwaysAuthorization() locationManager.requestLocation() } func locationManager(manager: CLLocationManager, didFailWithError error: NSError) print(error.description) } func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { print(“got location”) } 

Info.plist

Por favor intente esto:

Ir :

  • Producto -> Esquema -> Editar esquema -> Opciones -> Permitir que la simulación de ubicación se compruebe e intente proporcionar una ubicación predeterminada, no lo deje en “ninguno”

EDITAR : Como se menciona en los comentarios, también reinicie Xcode y ¡listo!

Espero que esto ayude.

Si la alerta de autorización de ubicación no aparece para usted, intente agregar NSLocationAlwaysUsageDescription a su lista como tipo de cadena. Además, haga lo mismo con NSLocationWhenInUseUsageDescription.

Buscando en google las respuestas verdaderas esto parece ser un problema desde IOS4.0.

en XCODE 7.1 en Proyecto => esquema => esquema de edición.

en Ejecutar => Opciones => Ubicación central / desactivar Permitir simulación de ubicación.

en su Simulador de IOS en Debug => Ubicación, seleccione una ubicación. Esto solucionó el problema para mí.

Estaba teniendo el mismo problema con una aplicación que me estaba moviendo de 8.0 -> 9.0 / 9.1. Intenté un par de cosas, como escribir la porción CLLocationManager solo en Swift y un nuevo proyecto Obj-C también. También lo probé en diferentes dispositivos. Para resolver el problema en el dispositivo, eliminé el func didFailWithError. Lo cual detiene el error por completo. Puede que esta no parezca la mejor idea, pero en IOS9 puede limitar su aplicación a dispositivos que tienen GPS o servicios de ubicación. Android ha estado haciendo esto durante mucho tiempo. También noté en su .plist que no tiene los permisos habilitados para NSLocationALwaysUsageDescription o las propiedades NSLocationWhenInUseUsageDescrtiption incluidas.

Solo como referencia, he adjuntado el aspecto de mi actual .plist que no desencadena este error, así como un fragmento de código en obj-c el archivo del controlador. El código comienza al final de una función anterior y luego tiene el delegado didFailWithError comentado y didUpdateLocations. Actualmente esto está funcionando con éxito en IOS 9.1

  //Get map authorization [CLLocationManager locationServicesEnabled]; locationManager = [[CLLocationManager alloc]init]; locationManager.delegate = self; locationManager.allowsBackgroundLocationUpdates = YES; if(nil == locationManager) locationManager = [[CLLocationManager alloc]init]; if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) { [locationManager requestAlwaysAuthorization]; } //locationManager.distanceFilter=10; locationManager.desiredAccuracy = kCLLocationAccuracyBest; [locationManager startUpdatingLocation]; //- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error //{ // NSLog(@"didFailWithError: %@", error); // UIAlertView *errorAlert = [[UIAlertView alloc] // initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; // [errorAlert show]; //} -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{ NSLog(@"LocationUpdated: %@",[locations lastObject]); [self updateMapMarkers]; // NSDate* eventDate = location.timestamp; // NSTimeInterval howRecent = [eventDate timeIntervalSinceNow]; // if(fabs(howRecent) < 15.0){ // [self updateMapMarkers]; // } } 

imagen .plist

Tengo estas sugerencias para las personas que usan mapas de apple en su aplicación

  1. No retransmitir en los resultados del simulador, porque siempre no dará resultados exactos.
  2. Para todas las pruebas de depuración y ejecución relacionadas con mapas en dispositivos reales.
  3. Como en xcode 8 (a mi entender), puede conectar su dispositivo iOS al sistema y ejecutar la aplicación directamente.
  4. Incluso para el problema anterior, la solución es la misma, solo prueba con dispositivos reales para resolver tu problema.