Je souhaite que mon programme affiche l'emplacement des utilisateurs sur la carte. Il fonctionnait au début puis s'est arrêté au hasard. J'ai donc ajouté le code ci-dessous pour essayer de le réparer, mais j'ai des problèmes. Merci d'avance!
override func viewDidLoad()
{
super.viewDidLoad()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
if CLLocationManager.locationServicesEnabled()
{
let status: CLAuthorizationStatus = CLLocationManager.authorizationStatus()
if status == CLAuthorizationStatus.NotDetermined
{
locationManager.requestAlwaysAuthorization()
}
} else {
print("locationServices disenabled")
}
locationManager.startUpdatingLocation()
self.locationManager.startUpdatingLocation()
self.mapView.showsUserLocation = true
mapView.delegate = self
centerMapOnLocation(initialLocation)
addBoundry()
}
Vous devez appeler,
locationManager.requestAlwaysAuthorization()
ainsi que
locationManager.requestWhenInUseAuthorization()
utiliser l'emplacement en douceur au premier plan aussi !!!
et vous ne devriez pas avoir besoin de deux instances pour appeler startupdatinglocation
. en garder un. vous devez utiliser l'instance ou la variable globale au lieu de local pour obtenir l'emplacement dans toute l'étendue.
Mettre à jour :
Vous devez définir deux clés dans info.plist
comme NSLocationAlwaysUsageDescription
et NSLocationWhenInUseUsageDescription
avec sa description d'utilisation.
J'avais le même problème, même avec NSLocationAlwaysUsageDescription
et NSLocationWhenInUseUsageDescription
set dans info.plist. Mon débogueur m'a dit de définir également NSLocationAlwaysAndWhenInUseUsageDescription
... alors je l'ai fait. Ça a marché!
Si vous souhaitez recevoir la notification "WhenInUse", vous devez uniquement ajouter "Confidentialité - Emplacement lors de l'utilisation Description d'utilisation" dans votre info.plist, mais si vous souhaitez que "Toujours" accède à votre info.plist devrait ressembler à cette capture d'écran info.plist
Vous n'avez pas à ajouter d'autorisation de demande telle que requestAlwaysAuthorization ou requestWhenInUseAuthorization.