iOS 14系统,为了进一步控制定位隐私数据的安全性,也针对各APP实际上对于定位精度的需求不一致的问题(如天气、新闻类APP实际上只需要城市级别定位精度即可),定位权限在用户授予时增加了『精确位置』的开关,如下图所示:
用户可以点击上图红色区域,以控制是否授予APP高精度等级定位权限。在授予低精度等级定位权限的情况下,开发者仍然可以从定位sdk的位置回调中获取到位置数据,但定位精度会受很大影响,一般定位精度在5km范围内,更新频率也会变慢,几分钟内会更新几次。
用户也可以直接从APP定位隐私设置中控制『精确位置』开关,如下图所示:
1、新增属性:
开发者通过这一属性直接判断当前用户是否授予精确定位权限。枚举值如下:
2、新增方法:
上述方法只在iOS 14及以后版本系统才可用。
适用于在用户未授予精确定位权限的情况下,产品功能必须依赖精确定位的位置,开发者可以通过调用该方法临时触发系统弹框,让用户确认,其中参数:purposeKey,需要在info.plist中的NSLocationTemporaryUsageDescriptionDictionary中定义,不同产品场景可以定义不同的purposeKey。
3、新增回调
在BMKLocationMnagerDelegate中新增加回调:
通过该回调,在用户定位权限或者精确定位权限改变的时候,通知开发者,示例代码如下:
开发者在开发时,也可以配置app申请定位权限默认就是低精度的定位等级,有两种方式:
1、通过info.plist配置
2、通过代码控制:
适配iOS 14 Beta版的定位SDK开发包、类参考和示例代码可在相关下载页面进行下载。