【发布时间】:2020-07-15 06:48:37
【问题描述】:
在我的应用程序中,我想检查用户是否被授予“始终允许”的位置权限。因为我在进行位置共享,就像 WhatsApp 位置实时共享一样。
实际上测试用例是,当我们在应用设置中将位置权限状态更改为“使用应用时”并检查应用内按钮单击的状态时,我得到“始终授权”的值。
func isAlwaysPermissionGranted() -> Bool{
let aStatus = CLLocationManager.authorizationStatus()
if aStatus == .authorizedAlways {
return true
}
return false
}
如果我们有“使用应用程序时”权限,我无法区分“使用应用程序时”和“始终”。两者都具有相同的枚举值,即“authorizedAlways”。
但在 WhatsApp 中,如果我将位置权限更改为“使用应用时”并尝试分享我的实时位置,WhatsApp 会在应用设置中显示更改位置权限的提醒。
我也想这样做。
请帮助我在代码级别上有所不同。
【问题讨论】:
-
请分享更多代码以便更好地理解。您能否用您的整个
CLLocationManager配置更新您的问题?你实现了像didChangeAuthorization这样的委托方法吗? -
您是否要求“始终”?如果是这样,那么您将获得“始终”,因为即使设置显示您具有“使用时”,您也有临时的始终身份验证。一旦 iOS 提示用户升级到始终或在使用时保持,您将开始看到实际权限。
标签: ios swift cllocationmanager ios13