在 iOS 应用程序中,当用户拒绝位置权限时,我想显示一个警报以授予权限。我调试它并且代码成功运行,但我在模拟器中看不到任何警报。 我启动程序并拒绝位置许可。然后我重新启动它,但无法显示任何警报。
func checkLocationAuthorizationStatus() {
let status = locationManager.authorizationStatus
switch status{
case .authorizedWhenInUse, .authorizedAlways: //eğer iki izinden biri alınmış ise burası çalışıcak
locationManager.startUpdatingLocation()
case .denied, .restricted: //red yemiş ise burası çalışıcak
showLocationAccessAlert()
case .notDetermined: //henüz konum izni vermemiş
locationManager.requestWhenInUseAuthorization()
@unknown default:
break
}
}
func showLocationAccessAlert() {
let alert = UIAlertController(
title: "Konum Erişimi Gerekli",
message: "Lütfen Ayarlar'dan konum iznini etkinleştirin.",
preferredStyle: .alert
)
alert.addAction(UIAlertAction(title: "Ayarlar", style: .default) { _ in
if let settingsURL = URL(string: UIApplication.openSettingsURLString) {
UIApplication.shared.open(settingsURL, options: [:], completionHandler: nil)
}
})
alert.addAction(UIAlertAction(title: "Vazgeç", style: .cancel, handler: nil))
self.present(alert, animated: true, completion: nil)
}
iOS 模拟器有时会出现位置权限问题。在物理设备上进行测试。
如果问题仍然存在,请确保警报代码在主线程上执行。