首页 > 解决方案 > iOS 13如何检查用户只给予始终允许位置权限

问题描述

在我的应用程序中,我想检查用户是否被授予“始终允许”的位置权限。因为我在进行位置共享,就像 WhatsApp 位置实时共享一样。

实际上测试用例是,当我们在应用程序设置中将位置权限状态更改为“使用应用程序时”并检查应用程序内按钮单击的状态时,我得到“始终授权”值。

  func isAlwaysPermissionGranted() -> Bool{
    let aStatus = CLLocationManager.authorizationStatus()
    if aStatus == .authorizedAlways {
        return true
    }
     return false
  }

如果我们有“使用应用程序时”权限,我无法区分“使用应用程序时”和“始终”。两者都具有相同的枚举值,即“authorizedAlways”。

但是在 WhatsApp 中,如果我将位置权限更改为“使用应用程序时”并尝试分享我的实时位置,WhatsApp 会在应用程序设置中显示一个更改位置权限的警报。

我想做同样的事情。

请帮助我在代码级别上有所不同。

标签: iosswiftcllocationmanagerios13

解决方案


您可以像这样在didChangeAuthorization委托方法中检查它。

switch CLLocationManager.authorizationStatus() {
        case .notDetermined:
            //Ask for permission
            break
        case .restricted:
            // user retricted to use location service.(Ex: parental control)
            break
        case .denied:
            //user denied location service
            break
        case .authorizedAlways:
            //always allow
            break
        case .authorizedWhenInUse:
            // when in use
            break
        @unknown default:
            break
        }

推荐阅读