Quiero obtener la ubicación actual, pero en su lugar aparece un error.
Este es un fragmento de mi controlador de vista.
- (void)viewDidLoad {
self.locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];
[locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray<CLLocation *> *)locations {
// I would get the latest location here
// but this method never gets called
}
- (void)locationManager:(CLLocationManager *)manager
didFailWithError:(NSError *)error {
NSLog(@"didFailWithError: %@", error);
}
Espero locationManager:didUpdateLocations:
que se llame al método delegado , pero en cambio, solo locationManager:didFailWithError:
se llama e imprime esto:
didFailWithError: Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"
Respuestas:
Comprueba que tienes una conexión WiFi y 3G válida
... si lo hace, entonces:
Vaya a la configuración y restablezca sus servicios de ubicación
Esto debería solucionar ese problema. Está relacionado con el dispositivo / red, no con la aplicación. Es molesto especialmente si su aplicación depende de los servicios de ubicación y el dispositivo es solo WiFi y la gente da calificaciones negativas en la AppStore ... Perdón, me estoy poniendo un poco emocional.
fuente
Si está utilizando el simulador:
command + shift + ,
en Xcode para abrir el editor de esquemasAllow Location Simulation
La selección
None
como ubicación predeterminada puede haber causado el problema.fuente
iOS Simulator
>Reset Content and Settings...
Simplemente ignore este error y espere más actualizaciones o un error diferente.
Los documentos del administrador de ubicaciones dicen que este error es temporal. Le informa que no pudo recuperar una ubicación de inmediato, pero sigue intentándolo. "En tal situación, simplemente puede ignorar el error y esperar un nuevo evento". Lo cual es una forma realmente sensata de usar un método llamado
locationManager:didFailWithError:
- ¡Gracias Apple!Apple Documentation
fuente
Intente reiniciar el simulador (asumiendo que eso es lo que está usando).
Después de probar todo lo demás, esto funcionó para mí.
fuente
Un reinicio del simulador no funcionó para mí.
fuente
Recibí este error en el simulador. Al hacer clic en el botón de ubicación en el panel de depuración y configurar una ubicación, solucionó el problema. (Asegúrese de que el botón sea azul)
fuente
Tengo el mismo problema. Creo que las posibles explicaciones / correcciones se tratan en esta publicación SO .
fuente
Cambiar la "Ubicación" en el simulador funcionó para mí.
fuente
fuente
Suponiendo que está utilizando el simulador, puede
Debug -> Location
establecer una ubicación.Si no ha seleccionado ninguno, tendrá este error.
fuente
Si está utilizando un,
custom location
asegúrese de tener el largo y el lat de la manera correcta, lo invertí y desperdicié 3 horas antes de darme cuenta ...fuente
He visto el problema antes, hay una manera de resolverlo, pero solo puede funcionar una vez. Si desea ejecutar el proyecto nuevamente y necesita repetir la solución cada vez.
fuente
Problemas como este se pueden resolver configurando la ubicación como "
Apple
". Al menos funciona con fines de prueba.fuente
de la respuesta de @Mem y muchas otras gracias
fuente
Para desarrolladores devueltos :) Simplemente seleccione "
Debug->Location->Freeway Drive
" en el menú del Simulador. Si el problema persiste, intente después de hacer "Simulador-> Restablecer contenido y configuración" desde el menú del simulador. Esto me ayudó una vez con el mismo problema. En algún momento la ubicación del simulador se establece en "Custom location
" debido a que no detecta nada.fuente
Si está utilizando el Simulador, asegúrese de que el esquema permita la ubicación y de que eligió una ubicación predeterminada.
fuente
Probar en el dispositivo. A veces, el simulador no toma su ubicación.
fuente
Ir a casa en simulador
inicio -> Configuración -> Privacidad -> Ubicaciones -> seleccione la aplicación y elija siempre
fuente
al agregar permiso Privacidad - Ubicación cuando está en uso Descripción de uso en info.plist se resolvió para mí
fuente