ios - iOS 13如何检查用户只给予始终允许位置权限
问题描述
在我的应用程序中,我想检查用户是否被授予“始终允许”的位置权限。因为我在进行位置共享,就像 WhatsApp 位置实时共享一样。
实际上测试用例是,当我们在应用程序设置中将位置权限状态更改为“使用应用程序时”并检查应用程序内按钮单击的状态时,我得到“始终授权”值。
func isAlwaysPermissionGranted() -> Bool{
let aStatus = CLLocationManager.authorizationStatus()
if aStatus == .authorizedAlways {
return true
}
return false
}
如果我们有“使用应用程序时”权限,我无法区分“使用应用程序时”和“始终”。两者都具有相同的枚举值,即“authorizedAlways”。
但是在 WhatsApp 中,如果我将位置权限更改为“使用应用程序时”并尝试分享我的实时位置,WhatsApp 会在应用程序设置中显示一个更改位置权限的警报。
我想做同样的事情。
请帮助我在代码级别上有所不同。
解决方案
您可以像这样在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
}
推荐阅读
- autodesk-forge - 根据 Revit 坐标(最小和最大 X、Y、Z)从锻造查看器中裁剪特定房间/区域
- azure-ad-b2c - Azure AD B2C/B2B 计费
- python - Python Plotly - 如何更改默认颜色
- regex - SQL RLIKE 函数 邮编搜索
- java - 将泛型类对象发送到泛型方法(java)
- c# - 如何使用 Where 和 OR 使用 Expression 构建动态查询
- javascript - 对对象数组中的日期和时间字符串进行排序
- node.js - azure 存储表检索具有正确数据类型的行。所有值都作为字符串而不是正确的类型返回
- javascript - 有没有其他方法可以优化此功能或更好的方法?
- angular - 如何在 2 个组件中显示 2 个分离的烤面包机