无法向用户显示警报

问题描述 投票:0回答:1

当用户拒绝授予位置权限时,我想快速显示授予权限的警报。我调试它并且代码成功运行,但我在模拟器中看不到任何警报。 我启动程序并拒绝位置许可。重新启动就无法显示任何警报。

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 swift uikit core-location
1个回答
0
投票

iOS 模拟器有时会出现位置权限问题。在物理设备上进行测试。

如果问题仍然存在,请确保警报代码在主线程上执行。

© www.soinside.com 2019 - 2024. All rights reserved.