Je travaille sur un bouton qui enverra l'utilisateur à l'application de cartes s'il accorde la permission de localisation de l'application. Le problème est que si je clique une fois sur le bouton et que je refuse l'autorisation de localisation, la prochaine fois que je clique sur le bouton, l'application ne demande plus la permission. On dirait que l'utilisateur n'a "qu'une seule chance d'accorder des permissions sur les cartes".Essayer d'obtenir la permission de localisation dans iOS Swift
Voici le code que j'utilise pour créer par programme le bouton avec les fonctions de rappel. Il y a aussi une capture d'écran des "Propriétés de la cible iOS personnalisée" où j'ai inclus la description de l'utilisation de la zone de confidentialité pour pouvoir utiliser l'emplacement des utilisateurs.
directionsButton.addTarget(self, action: #selector(getDirection), for: UIControlEvents.touchUpInside)
func getDirection(sender: UIButton!) {
print("1")
if(CLLocationManager.authorizationStatus() == CLAuthorizationStatus.authorizedWhenInUse ||
CLLocationManager.authorizationStatus() == CLAuthorizationStatus.authorizedAlways){
let url = URL(string: "http://maps.apple.com/?daddr=60.79281049999999,10.688968899999963")
if (UIApplication.shared.canOpenURL(url!)) {
UIApplication.shared.openURL(url!)
} else {
print("Error")
}
print("2")
} else{
LocationManager.requestWhenInUseAuthorization()
print("3")
}
print("4")
}
/*
- Callback function for changes in location permissions
*/
func locationManager(_ manager: CLLocationManager,
didChangeAuthorization status: CLAuthorizationStatus){
print("change in auth")
if(CLLocationManager.authorizationStatus() == CLAuthorizationStatus.authorizedWhenInUse){
let url = URL(string: "http://maps.apple.com/?daddr=60.79281049999999,10.688968899999963")
if (UIApplication.shared.canOpenURL(url!)) {
UIApplication.shared.openURL(url!)
} else {
print("Error")
}
} else{
self.view.makeToast("Couldn't get location permission", duration: 3.0, position: .bottom)
}
}
Picture of permissions added in the info-file