Я работаю над кнопкой, которая отправит пользователя в приложение карты, если он предоставит разрешение на размещение приложения. Проблема в том, что если я один раз нажму кнопку и сниму разрешение на размещение, в следующий раз, когда я нажму кнопку, приложение не попросит разрешения снова. Похоже, что у пользователя есть «только один шанс на предоставление разрешений на карты».Попытка получить разрешение на размещение в iOS Swift
Ниже приведен код, который я использую для программного создания кнопки с функциями обратного вызова. Также есть скриншот «Пользовательские свойства iOS Target», в котором я включил описание конфиденциальности - Location Usage Description, чтобы иметь возможность использовать местоположение пользователей.
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