根据 WWDC 视频,https://developer.apple.com/videos/play/wwdc2019/705/ ,当您请求“AlwaysAuthorization
”权限时,您只会看到“When In Use, Once and Don't allow”
。即使您点击“When In Use
”,代理回调也将作为 kCLAuthorizationStatusAuthorizedAlways
返回。这按预期工作。但是有没有办法发现请求仍然是临时的或实际上总是允许的?
没有与此权限关联的枚举。唯一允许的枚举是:
kCLAuthorizationStatusNotDetermined, kCLAuthorizationStatusDenied, kCLAuthorizationStatusAuthorizedAlways, kCLAuthorizationStatusAuthorizedWhenInUse
因为我想在用户授予“While In Use
”权限后立即显示警报,告诉他们该应用只有在您提供“Always Allow
"通过系统偏好设置,我可以通过点击将它们导航到我的应用程序的系统设置页面,就像 Zenly 的做法一样:https://www.macrumors.com/2019/08/16/app-developers-tracking-restrictions-ios-13/
最佳答案
您可以在应用程序进入后台后 10 秒以上检查您是否在后台获取位置更新。如果是,则您拥有永久性的 Allow Always
。如果没有,则您拥有临时的 Allow Always
(或您可以明确检查的任何其他授权)。
关于iOS 13 检查 CLLocationManager 的临时授权状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57689312/