ios定位sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
ios 14 beta适配说明
下载开发文档
一、用户可以控制授予app的定位精度等级

ios 14系统,为了进一步控制定位隐私数据的安全性,也针对各app实际上对于定位精度的需求不一致的问题(如天气、新闻类app实际上只需要城市级别定位精度即可),定位权限在用户授予时增加了『精确位置』的开关,如下图所示:

用户可以点击上图红色区域,以控制是否授予app高精度等级定位权限。在授予低精度等级定位权限的情况下,开发者仍然可以从定位sdk的位置回调中获取到位置数据,但定位精度会受很大影响,一般定位精度在5km范围内,更新频率也会变慢,几分钟内会更新几次。

用户也可以直接从app定位隐私设置中控制『精确位置』开关,如下图所示:

二、定位sdk新增适配api说明

1、新增属性:

///返回定位精度等级,ios14之后用户可以直接控制返回定位的精度等级,开发者可以通过这个值适配不同定位等级下的产品逻辑
@property(nonatomic, readonly)bmklaccuracyauthorization accuracyauthorization;

开发者通过这一属性直接判断当前用户是否授予精确定位权限。枚举值如下:

/** bmklaccuracyauthorization 枚举返回定位精度等级
*
*/
typedef ns_enum(nsinteger,bmklaccuracyauthorization){
bmklaccuracyauthorizationfullaccuracy,///<全量定位精度等级,该等级下定位返回结果会尽可能精准
bmklaccuracyauthorizationreducedaccuracy,///<降级定位精度等级,该等级下定位会返回大概5km精度范围的点,定位频率、实时性上也会变慢,比如可能是20分钟之前的点,适用于那些只要求城市级别精度的app使用;ios14之后,该等级受用户控制,需要高等级权限的app需要对应做好适配工作
};

2、新增方法:

/**
* @brief 如果你没有全量定位等级精度权限,利用该接口可以临时请求一次全量定位精度等级,系统会抛出弹框让用户确认是否授权app授予相应权限
* @param purposekey info.plist中nslocationtemporaryusagedescriptiondictionary定义的key,对应相应的value可以详细描述申请全量定位精度等级的原因
* @param completion 回调是否
* @return
*/
-(void)requesttemporaryfullaccuracyauthorizationwithpurposekey:(nsstring* _nonnull)purposekey completion:(void(^ _nullable)(nserror* _nullable))completion api_available(ios(14.0));
/**
* @brief 请求一次全量定位精度等级
* @param purposekey info.plist中nslocationtemporaryusagedescriptiondictionary定义的key
* @return
*/
-(void)requesttemporaryfullaccuracyauthorizationwithpurposekey:(nsstring* _nonnull)purposekey api_available(ios(14.0));

上述方法只在ios 14及以后版本系统才可用。适用于在用户未授予精确定位权限的情况下,产品功能必须依赖精确定位的位置,开发者可以通过调用该方法临时触发系统弹框,让用户确认,其中参数:purposekey,需要在info.plist中的nslocationtemporaryusagedescriptiondictionary中定义,不同产品场景可以定义不同的purposekey。

3、新增回调

在bmklocationmnagerdelegate中新增加回调:

/**
* @brief authorizationstatus或者accuracyauthorization有变化时回调函数
* @param manager 定位 bmklocationmanager 类。
*/
-(void)bmklocationmanagerdidchangeauthorization:(bmklocationmanager* _nonnull)manager;

通过该回调,在用户定位权限或者精确定位权限改变的时候,通知开发者,示例代码如下:

/**
* @brief authorizationstatus或者accuracyauthorization有变化时回调函数
* @param manager 定位 bmklocationmanager 类。
*/
-(void)bmklocationmanagerdidchangeauthorization:(bmklocationmanager* _nonnull)manager {
nslog(@"loc clauthorizationstatus = %ld",(long)manager.authorizationstatus);
nslog(@"loc accuracyauthorization = %ld",(long)manager.accuracyauthorization);
if(manager.accuracyauthorization==bmklaccuracyauthorizationreducedaccuracy){
if(@available(ios 14.0,*)){
[manager requesttemporaryfullaccuracyauthorizationwithpurposekey:@"temprequestfulllocaccuracy"completion:^(nserror* _nullable error){
if(error){
nslog(@"requesttemporaryfullaccuracyauthorizationwithpurposekey error = %@", error);
}
}];
}
}else{
nslog(@"user has choose full loc accuracy permission");
}
if(manager.accuracyauthorization== kclauthorizationstatusauthorizedwheninuse){
nslog(@"user has choose when in use loc permission");
}elseif(manager.accuracyauthorization== kclauthorizationstatusauthorizedalways){
nslog(@"user has choose always loc permission");
}elseif(manager.accuracyauthorization== kclauthorizationstatusdenied){
nslog(@"user has choose denied loc permission");
}
}
三、默认选择低精度定位模式

开发者在开发时,也可以配置app申请定位权限默认就是低精度的定位等级,有两种方式:

1、通过info.plist配置

2、通过代码控制:

if(@available(ios 14.0,*)){
_locationmanager.desiredaccuracy= kcllocationaccuracyreduced;
}else{
// fallback on earlier versions
}

适配ios 14 beta版的定位sdk开发包、类参考和示例代码可在相关下载页面进行下载。

上一篇

防作弊功能

下一篇

提交appstore注意事项

本篇文章对您是否有帮助?

网站地图