Swift LocationManager didChangeAuthorizationStatus Toujours Appelé
J'ai vue contrôleur qui met en œuvre la CLLocationManagerDelegate
. J'ai créer un le CLLocationManager variable:
let locationManager = CLLocationManager()
Puis dans le viewDidLoad
, j'ai mis des propriétés:
//Set location manager properties
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
locationManager.distanceFilter = 50
Le problème vient que la fonction est appelée avant même que je vérifie l'état d'autorisation.
func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if (status == .AuthorizedWhenInUse) {
//User has granted autorization to location, get location
locationManager.startUpdatingLocation()
}
}
Quelqu'un peut-il m'informer de ce qui pourrait être la cause de cela?
Vous devez vous connecter pour publier un commentaire.
- locationManager:didChangeAuthorizationStatus:
est appelé peu de temps après laCLLocationManager
est initialisé.Vous pouvez en demander l'autorisation à l'intérieur de la méthode du délégué si vous le souhaitez:
Être conscient que vous devez assigner le délégué à un moment opportun importe si vous voulez que cela fonctionne.
Si vous serait en quelque sorte délai le délégué de cession, par exemple en fixant de manière asynchrone, vous risquez de manquer l'appel initial à
- locationManager:didChangeAuthorizationStatus:
.didChangeAuthorizationStatus
appelé peu de temps aprèsCLLocationManager
est initialisé, mais où est-ce documenté?didChange
de l'état d'autorisation. L'écriture de code qui réagit à des changements réels dans l'état d'autorisation est compromise par ce comportement.Swift 3