ios - 如何检测系统范围的定位服务变化

标签 ios ios8 core-location

我正在处理用户可能会关闭其手机上的定位服务的潜在案例。

现在,我有:

func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
    if status == .Authorized || status == .AuthorizedWhenInUse {
        manager.startUpdatingLocation()
    } else {
        manager.stopUpdatingLocation()
    }
}

我假设只要用户进入“设置”并亲自更改我的应用程序设置,就会触发此操作。每当用户关闭所有应用程序的定位服务时,这是否也会触发?文档似乎没有讨论它。

最佳答案

是的。在全局范围内启用定位服务也将触发该方法,这实际上意味着 kCLAuthorizationStatusDenied 将作为当前状态发送。

一旦用户再次启用位置服务,该方法将再次被触发,其他枚举选项之一将作为当前状态发送 - 值将取决于该特定应用程序的位置服务设置历史记录。

关于ios - 如何检测系统范围的定位服务变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28840277/

相关文章:

ios - 垂直页面索引的开源代码

ios - 多部分形式(图像、参数、标题)在 swift 中使用 Alamofire 发布请求

iOS 8 : When App in Background CBCentralManager Delegate Method didDiscoverPeripheral, didConnectPeripheral、didFailToConnectPeripheral 未调用

ios - CLLocationManager 不改变坐标?

ios - 试图为 i-pad 制作一个 flash 项目,但在 itunes 上它作为一个 i-phone 应用程序出现

ios - 在 iOS 上对 Google Cloud Endpoints 执行同步查询

ios - 在 UITableViewRowAction 按钮中管理 Equall 宽度?

swift - 8.3 后无法在 Spotlight 中使用键盘扩展

swift - 将坐标存储到 Firebase 中的实时数据库

ios - CLLocationManager startMonitoringForRegion : not relaunching app after device restart