CoreLocation Authorization in iOS8+

cdduanwx 8年前

来自: http://www.calios.gq/2016/03/02/CoreLocation-Authorization-in-iOS8/

1. CoreLocationManager 中新增的方法

iOS8在位置获取权限上做了更细的划分,也就是说,用户可以选择允许app在后台使用位置信息、在使用期间使用位置信息或者不允许使用位置信息。

因此,在 CLLocationManager 中添加了如下两个方法:

  • requestWhenInUseAuthorization() : 向用户请求只在app使用期间获取位置信息的权限。
  • requestAlwaysAuthorization() : 向用户请求app在后台使用位置信息的权限。

    locationManager = CLLocationManager()

    locationManager.delegate = self

    locationManager.desiredAccuracy = kCLLocationAccuracyBest

    locationManager.requestAlwaysAuthorization()

    locationManager.startUpdatingLocation()

    </li> </ul>

    2.提供说明信息

    CoreLocation 需要给用户展示一个信息,告诉他们为什么需要使用他们的位置信息。这个展示的信息,叫“usage string”,可以在info.plist文件中设置。

    然而,下拉列表中找到的唯一相关的 NSLocationUsageDescription 貌似不起什么作用。

    因为 NSLocationUsageDescription 在iOS8及iOS8+中都被忽略掉了。同时,有两个新的key被引入进来。

    • NSLocationAlwaysUsageDescription :前后台均允许使用
    • NSLocationWhenInUseUsageDescription : 只允许前台使用

    貌似Xcode并没有更新下拉列表中的内容,所以只能手动输入key了。

    在iPhone中相应的设置信息可以在这里看到:

    哦了,K06-Where结束了。回归地球。

    Ref:

    </div>