虚拟定位检测

定位框架

#import <CoreLocation/CoreLocation.h>

获取定位代码

 // 初始化定位管理器
     _locationManager = [[CLLocationManager alloc] init];
     // 设置代理
     _locationManager.delegate = self;
     // 设置定位精确度到米
     _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
     // 设置过滤器为无
     _locationManager.distanceFilter = kCLDistanceFilterNone;
     // 取得定位权限,有两个方法,取决于你的定位使用情况
     // 一个是requestAlwaysAuthorization,一个是requestWhenInUseAuthorization
     // 这句话ios8以上版本使用。
     [_locationManager requestAlwaysAuthorization];
     // 开始定位
     [_locationManager startUpdatingLocation];

定位结果返回代码

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
    CLLocation *l1 = locations[0];
    
    NSString *s =  [NSString stringWithFormat:@"%lf", l1.coordinate.longitude];
    NSString *s2 = [NSString stringWithFormat:@"%lf", l1.coordinate.latitude];
    NSLog(@" 获取到位置 ===== %@ %@",s , s2);
    if (@available(iOS 15.0, *)) {
        NSLog(@" 位置信息来源 ===== %@ %@",@(l1.sourceInformation.isSimulatedBySoftware),@(l1.sourceInformation.isProducedByAccessory));
    } else {
        // Fallback on earlier versions
    }
}

1、正常手机定位iOS获取到的位置信息

sourceInformation.isSimulatedBySoftware 为0
sourceInformation.isProducedByAccessory 为0

2、爱思助手修改虚拟定位后获取位置

sourceInformation.isSimulatedBySoftware 为1
sourceInformation.isProducedByAccessory 为0

你可能感兴趣的:(cocoa,ios,macos)