定位的权限和定位精确度权限对该单一应用所有的LocationManager实例都适用,即只要有一个实例获得了权限,其他实例都获得。
权限的变更会通过TencentLBSLocationManagerDelegate中的
- (void)tencentLBSDidChangeAuthorization:(TencentLBSLocationManager *)manager方法回调
然后通过manager的authorizationStatus属性和accuracyAuthorization来确定当前应用的定位权限和精度权限
CLAuthorizationStatus authorizationstatus = manager.authorizationStatus;
TencentLBSAccuracyAuthorization accAuthor = manager.accuracyAuthorization;
可以使用以下方法判断当前应用的定位精度权限,业务可根据相应的值做出不同的操作:
TencentLBSAccuracyAuthorization accAuthor = [TencentLBSLocationManager accuracyAuthorization];
在TencentLBSLocationManager类中新增两个申请暂时的精确定位权限接口,
/*
当前属于模糊定位状态时,通过该接口请求暂时的完全定位精度的权限
@param purposeKey 需要在info.plist中配置 NSLocationTemporaryUsageDescriptionDictionary key值和对应的申请该权限的描述理由
@param completion
在弹框让用户选择后的用户的反馈,如果用户授予该权限,block中的参数为nil,如果未授予,block中的参数将为PurposeKey对于的key的描述(如PurposeKey=TemporaryPurposKey_1)
*/
- (void)requestTemporaryFullAccuracyAuthorizationWithPurposeKey:(NSString *)purposeKey completion:(void (^)(NSError *))completion;
/*
当前属于模糊定位状态时,通过该接口请求暂时的完全定位精度的权限
@param purposeKey 需要在info.plist中配置:NSLocationTemporaryUsageDescriptionDictionary的key值和对应的申请该权限的描述理由
*/
- (void)requestTemporaryFullAccuracyAuthorizationWithPurposeKey:(NSString *)purposeKey;
注意:
如果应用默认不使用精确定位,则可在info.plist中配置NSLocationDefaultAccuracyReduced字段为Boolean类型的true,在应用运行过程中仍然可以申请暂时的精确定位权限配置该字段后,申请定位权限的小地图左上角则没有精确开关,默认关闭,但是如果info.plist中配置了NSLocationTemporaryUsageDescriptionDictionary,则仍可以申请临时的精确定位权限;
有帮助
没帮助