1. 简介
Core Location 是用于帮助设备确定当前的位置、运动朝向及基于位置的距离、速度、方向等信息的 iOS 框架。参考《精通iOS框架》做了简单的总结。
2. 使用步骤
应用显示位置经过下面几个简单的步骤:
(1)位置信息授权
1.首先,在应用中使用 Core Location 框架,需要导入 Core Location,使用指令:“import”:
@import CoreLocation;
2.然后在 .plist 文件中添加一个条目,用于说明程序将会使用用户位置信息。使用到2个相关的关键字:NSLocationWhenUseUsageDescription 或 NSLocationAlwaysUsageDescription 。若没有找到授权类型关键字,就不会调用该请求所允许的对话框。
Core Location 的访问服务策略有:
Always, While Using 或 Never 三种,分别对应的是允许访问设备的位置信息的三种类型。
- Always
表示即使在程序未激活时,用户也允许相应的程序访问位置信息。 - While Using
表示仅在应用处于前台且是激活状态时,允许访问设备的位置信息。 - Never
表示不允许访问设备的位置信息。
前面二者使用 CLLocationManager 类,调用的函数分别为:
//1. Always:
requestAlwaysAuthorization
//2. When in use
requestWhenInUseAuthorization
- requestAlwaysAuthorization
按照苹果 API 的说法:
仅在必须后台启动位置服务时,才调用requestAlwaysAuthorization。按照苹果的隐私策略和用户对电池损耗的顾虑,必要情况下才使用此函数。 因为开启后,应用即使被手动关闭,在位置监控服务检测到位置变化等改变时,服务仍将重启。在应用处于后台时,iOS 将显示一个提示框,告知正在使用位置服务的 App 的信息。
*Calling this method will trigger a prompt to request “always”
* authorization from the user. If received, “always” authorization grants access to the user’s
* location via any CLLocationManager API, and grants access to
* launch-capable monitoring API such as geofencing/region monitoring,
* significante location visits, etc. Even if killed by the user, launch
* events triggered by monitored regions or visit patterns will cause a
* relaunch.
*
* “Always” authorization presents a significant risk to user privacy, and
* as such requesting it is discouraged unless background launch behavior
* is genuinely required. Do not call +requestAlwaysAuthorization unless
* you think users will thank you for doing so.
此图片来源于