简介
百度iOS定位SDK支持定位防作弊功能,挖掘各类模拟定位方式对百度定位SDK内部信息的影响特征,综合多源数据分析,有效的识别模拟定位结果,为签到、运动、游戏等场景的位置真实性提供有力保障。
实现定位防作弊能力的方法如下:
1引入头文件
在调用定位功能的类中引入 BMKLocationComponent.h 这个头文件。
#import <BMKLocationkit/BMKLocationComponent.h>
2配置AK
在调用定位时,需要添加AK,需要注意的是请在 SDK 任何类的初始化以及方法调用之前设置正确的 AK。设置AK的方式如下:
[[BMKLocationAuth sharedInstance] checkPermisionWithKey:@"输入AK" authDelegate:self];
3初始化locationManager
self.locationManager = [BMKLocationManager new]; self.locationManager.delegate = self;
4单次定位
调用 BMKLocationManager 的 requestLocationWithReGeocode:withNetworkState:completionBlock: 方法,请求一次定位。
[self.locationManager requestLocationWithReGeocode:YES withNetworkState:YES completionBlock:^(BMKLocation * _Nullable location, BMKLocationNetworkState state, NSError * _Nullable error) { if (error) { NSLog(@"locError:{%ld - %@};", (long)error.code, error.localizedDescription); } NSString *result; if (location.location) { //得到定位信息,判断作弊概率 switch (location.mockProbability) { case BMKMockLocationProbabilityNone: result = @"当前定位信息作弊概率为0"; break; case BMKMockLocationProbabilityLow: result = @"当前定位信息作弊概率为低概率"; break; case BMKMockLocationProbabilityMid: result = @"当前定位信息作弊概率为中概率"; break; case BMKMockLocationProbabilityHigh: result = @"当前定位信息作弊概率为高概率"; break; default: break; } } }];
5持续定位
调用BMKLocationManager提供的startUpdatingLocation方法实现。代码如下
[self.locationManager startUpdatingLocation];
5.1持续定位回调 实现BMKLocationManagerDelegate的方法
- (void)BMKLocationManager:(BMKLocationManager * _Nonnull)manager didUpdateLocation:(BMKLocation * _Nullable)location orError:(NSError * _Nullable)error { if (error) { NSLog(@"locError:{%ld - %@};", (long)error.code, error.localizedDescription); } NSString * result; if (location) { if (location.location) { //得到定位信息,判断作弊概率 switch (location.mockProbability) { case BMKMockLocationProbabilityNone: result = @"当前定位信息作弊概率为0"; break; case BMKMockLocationProbabilityLow: result = @"当前定位信息作弊概率为低概率"; break; case BMKMockLocationProbabilityMid: result = @"当前定位信息作弊概率为中概率"; break; case BMKMockLocationProbabilityHigh: result = @"当前定位信息作弊概率为高概率"; break; default: break; } } } }