iphone - usage - startupdatinglocation swift
IOS 9 Error Domain=kCLErrorDomain Code=0 “(null)” (6)
El siguiente código debe obtener la ubicación actual. Pero se genera el error anterior. 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”)
}
Estaba teniendo el mismo problema con una aplicación que estaba cambiando de 8.0 -> 9.0 / 9.1. Intenté un par de cosas como escribir la parte 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é la función didFailWithError. Lo que detiene el error por completo. Puede que esta no sea la mejor idea, pero en IOS9 puede limitar su aplicación a dispositivos que tengan 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 mi aspecto actual .plist que no activa 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 funciona 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];
// }
}
Por favor intente esto:
Ir :
- Producto -> Esquema -> Editar esquema -> Opciones -> Permitir simulación de ubicación debe estar marcado 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, intente agregar NSLocationAlwaysUsageDescription a su plist como cadena de tipo. Además, haga lo mismo para NSLocationWhenInUseUsageDescription.
Tengo estas sugerencias para las personas que usan mapas de Apple en su aplicación
- No transmitas los resultados del simulador, porque siempre no dará resultados exactos.
- Para todas las pruebas de depuración y ejecución relacionadas con mapas en dispositivos reales.
- Al igual que en xcode 8 (con mi conocimiento), solo puede conectar su dispositivo iOS al sistema y ejecutar la aplicación directamente.
- Incluso para el problema anterior, la solución es la misma, solo intente con dispositivos reales, su problema se resolverá.
buscando en google true las respuestas esto parece ser un problema desde IOS4.0.
en XCODE 7.1 bajo Proyecto => esquema => editar esquema.
en Ejecutar => Opciones => Ubicación central / deshabilitar Permitir simulación de ubicación.
en su simulador de IOS en Debug => Location seleccione una ubicación. Esto solucionó el problema para mí.