在设置中启用后,位置信息请求不会出现

时间:2019-11-06 11:43:43

标签: permissions request location swiftui

我只是从SwiftUI和应用程序开发入手。在我的应用中,我正在检查CLAuthorizationStatus。如果状态被拒绝或限制,则显示警报并指导用户进行设置。

当用户选择始终授权并返回到应用程序时,它可以正常工作并获得地理位置。

但是,当用户在设置中选择“从不”或“始终询问”并返回到应用程序时,我想强制应用程序重新加载并重新检查权限,因为如果用户选择了“始终询问”,该应用程序应该完全做到这一点,事实并非如此。在这种情况下,它保持为“ .notDetermined”。

这是我的LocationManager类中的一些代码:

class LocationManager: NSObject, ObservableObject {

    .....

    override init() {
        super.init()
        self.locationManager.delegate = self
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
        self.locationManager.requestWhenInUseAuthorization()
        self.locationManager.startUpdatingLocation()
    }

....
}
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
        self.locationStatus = status

        switch status {
            case .notDetermined:
                break
            case .authorizedWhenInUse, .authorizedAlways:
              if CLLocationManager.locationServicesEnabled() {
                  self.locationManager.startUpdatingLocation()
                }
            case .restricted, .denied:
                showPermissionAlert()
        default: break
        }

        print(#function, statusString)
    }

我如何设法强制返回到应用程序的请求?退出并重新启动确实会带来请求窗口,但不会从设置中返回。

提前谢谢!

0 个答案:

没有答案