iOS 13 检查 CLLocationManager 的临时授权状态

标签 ios swift cllocationmanager ios13

根据 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/

相关文章:

ios - SWRevealViewController 构建错误

ios - 当旋转或放大/缩小 map 时,自定义 MKAnnotationView 位置会发生巨大变化

swift - 修改 AVCaptureStillImageOutput 为 AVCapturePhotoOutput

ios - 使用 EXC_BAD_INSTRUCTION 在 CLLocationManager.authorizationStatus() 行上 Swift 崩溃

ios - 在 xcode/swift 中使用位置管理器获取用户的当前位置时,我得到的值为 nil。有什么建议么?

iphone - 在 iOS 中使用 mime 类型或 UTI 类型的内置图标

ios - 读取 NSTimer 子类的 public var valid 失败,错误为 'isValid only defined for abstract class'

ios - 将视频输出添加到 ARKit 应用

ios - UIFont:如何使用文体替代字符?

ios - 在 iOS Objective C 中处理位置权限