当用户拒绝跟踪其位置并且整个应用基于当前位置时,处理情况的正确方法是什么?我在viewDidAppear中调用locationAuthorization()
,当用户允许该位置时,它可以正常工作。
func locationAuthorization(){
if CLLocationManager.authorizationStatus() == .authorizedWhenInUse{
refreshData()
} else if (CLLocationManager.authorizationStatus() == .denied) {
addressButton.isHidden = true
} else {
locationManager.requestWhenInUseAuthorization()
sleep(2)
locationAuthorization()
}
}
我试图在.denied语句中调用locationAuthorization()
,但它显然没有用。放locationManager.requestWhenInUseAuthorization()
也不行。
那么,当用户点击时,处理这种情况的最佳方法是什么?不要允许&#34 ;?它使我的应用程序无法使用,所以我必须显示位置窗口,直到用户接受它。
答案 0 :(得分:5)
将其放在.denied
部分:
let alert = UIAlertController(title: "Need Authorization", message: "This app is unusable if you don't authorize this app to use your location!", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
alert.addAction(UIAlertAction(title: "Settings", style: .default, handler: { _ in
let url = URL(string: UIApplicationOpenSettingsURLString)!
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}))
self.present(alert, animated: true, completion: nil)
您不能再次申请授权,但您可以告诉别人在设置中更改授权。