这是我参与8月更文挑战的第15天,活动详情查看: 8月更文挑战” juejin.cn/post/698796… ”
前言
本文重点
- 限制商户定位至大陆以外地区
通过经纬度进行判断。利用高德SDK进行判断。(
如果是手动输入位置信息就进行逆地理编码获取经纬度再进行判断)
- 优化定位权限检查的处理逻辑:针对 kCLAuthorizationStatusNotDetermined 情况的处理
用户没有选择是否要使用定位服务(弹框没选择,或者根本没有弹框)
[AMapLocationKit] 要在iOS 11及以上版本使用后台定位服务, 需要实现amapLocationManager:doRequireLocationAuth: 代理方法】
I、 限制境_外定位
原理:根据经纬度判断是否在大陆地区
1.1 根据经纬度判断是否在大陆地区
- AMapLocationDataAvailableForCoordinate
/**
根据经纬度判断 是否在大陆地区
*/
+ (BOOL)inChineseMainlandWithCLLocation:(CLLocation *)location regeocode:(AMapLocationReGeocode *)regeocode{
if(AMapLocationDataAvailableForCoordinate(location.coordinate)){//当前位置在大陆、港澳地区
//香港特别行政区
// 澳门特别行政区
/////省/直辖市
// @property (nonatomic, copy) NSString *province;
if([regeocode.province isEqualToString:@"香港特别行政区"] || [regeocode.province isEqualToString:@"澳门特别行政区"]){
return NO;
}else{
return YES;
}
}else{//其他地区
return NO;
}
return YES;
}
用法
CLLocation *location = [[CLLocation alloc]initWithLatitude:[array.lastObject doubleValue] longitude:[array.firstObject doubleValue]];
AMapLocationReGeocode* regeocode = [AMapLocationReGeocode mj_objectWithKeyValues:geocodesDto.mj_keyValues];
if([ERPAMapLocationTool inChineseMainlandWithCLLocation:location regeocode:regeocode]){
}else{
[SVProgressHUD showInfoWithStatus:@"您最新定位不在支持范围内!"];
return;
}
[weakSelf locotionRequestLat:[NSNumber numberWithDouble:location.coordinate.latitude].description Lon:[NSNumber numberWithDouble:location.coordinate.longitude].description adress:weakSelf.locationView.adressTextView.text];
1.2 通过逆地理编码进行判断定位是否在大_陆
- 逆地理编码:将经纬度转换为详细结构化的地址,且返回附近周边的POI、AOI信息。
例如:116.480881,39.989410 转换地址描述后:北京市朝阳区阜通东大街6号
- 通过逆地理编码进行判断是否在大陆的处理流程
1、 请求
https://restapi.amap.com/v3/geocode/geo把用户输入的经营地址位置信息转为经纬度信息2、根据获取的经纬度信息再进行判断是否在大陆
/**
通过逆地理编码进行判断是否在大陆
*/
- (void)setupGeocode{
__weak __typeof__(self) weakSelf = self;
if (weakSelf.locationView.adressTextView.text.length > 0) {//1、 判断经营地址信息,不为空进行逆地理编码(请求`https://restapi.amap.com/v3/geocode/geo`把用户输入的经营地址位置信息转为经纬度信息)
[SVProgressHUD showWithStatus:@"定位中.."];
AFHTTPSessionManager *managers = [AFHTTPSessionManager manager];
managers.requestSerializer = [AFHTTPRequestSerializer serializer];
managers.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"text/plain",@"application/json",@"text/javascript",nil];
// 完成代码请看原文:https://kunnan.blog.csdn.net/article/details/119685526
}
完整代码请看原文:kunnan.blog.csdn.net/article/det…
II 修改位置信息进行测试验证
方法1:借助i4Tools修改真机地址
安装命令行工具代码:xcode-select --install
自签命令代码:codesign -f -s - --deep /Applications/i4Tools.app
方法2:使用模拟器修改地址
- 测试数据
// province=香港特别行政区
latitude=22.26429541107516
longitude=114.18135238995905
// province=澳门特别行政区
latitude=22.135584619138957
longitude=113.57214697205735
2020-04-09 15:39:54.504424+0800 retail[8369:4238323] reGeocode:AMapLocationReGeocode:{formattedAddress:澳门特别行政区圣方济各堂区靠近澳门青年挑战营; country:中国;province:澳门特别行政区; city:(null); district:圣方济各堂区; citycode:1853; adcode:820008; street:(null); number:(null); POIName:澳门青年挑战营; AOIName:(null);}
121.524582,25.028822
2020-04-09 16:02:47.411507+0800 retail[8369:4238323] reGeocode:AMapLocationReGeocode:{formattedAddress:台湾省(私)私立七田真超右脑教育托儿所; country:中国;province:台湾省; city:(null); district:(null); citycode:1886; adcode:710000; street:(null); number:(null); POIName:(私)私立七田真超右脑教育托儿所; AOIName:(null);}
方法3: 通过GPX文件修改经纬度信息
iOS测试技巧:通过GPX文件修改经纬度信息(模拟iOS设备的位置)
III 、 优化定位权限检查的处理逻辑
- 优化定位权限检查的处理逻辑:主要针对iOS13访问位置信息信息新增的【下次询问】的场景):iOS 13新增App地理位置访问“仅允许一次”
测试方法: 先设置【使用app时允许】,再去系统的设置修改定位信息的权限为:【下次询问】。回到app去更新定位信息。
- 定位之前,先检测权限,如果是kCLAuthorizationStatusNotDetermined的时候,需要实现这个方法
amapLocationManager:(AMapLocationManager *)manager doRequireLocationAuth:(CLLocationManager*)locationManager,来让用户进行选择。
- (void)amapLocationManager:(AMapLocationManager *)manager doRequireLocationAuth:(CLLocationManager*)locationManager
{
[locationManager requestAlwaysAuthorization];
}
IV、风险商户处理
- 盗刷拒付风险
- 疑似欺诈、电诈、套现风险
- 赌博、异常大额、异常测试:
- 跨境风险
see also
更多内容请关注公众号:iOS逆向
iOS定位、地理/逆地理编码的使用:https://kunnan.blog.csdn.net/article/details/119685612
说起安全,这里先提醒下大家
近日一蠕虫病毒incaseformat将于
1月23日再次爆发,该病毒伪装为文件夹图标,隐藏自身exe后缀骗取用户双击运行,发作时在C盘中生成ttry.exe或tsay.exe文件,可能删除C盘等系统盘以外所有盘符内文件,危害极大。 即使该病毒诞生时间久远,现有专业杀毒软件均能可靠查杀。大家也要保持良好的操作习惯:不在陌生网站下载资源,不访问不可靠的网站,不使用陌生U盘,减少移动存储介质的使用频率。