iOS测试技巧:通过GPX文件修改经纬度信息(模拟iOS设备的位置)

简介: iOS测试技巧:通过GPX文件修改经纬度信息(模拟iOS设备的位置)

前言

修改方式:

1、通过GPX文件修改经纬度信息 2、直接hook CLLocation修改定位 (iOS逆向)

应用场景1:

在开发测试时尽量模拟真实用户的位置信息。为了测试方便,直接使用代码修改经纬度,而不用真的的去到对应的地方

应用场景2:打卡

I、通过GPX文件修改经纬度信息

例子:修改经纬度,逆地理编码来获取位置信息

然后使用系统API获取到经纬度,再使用系统API进行逆地理编码,以获取详细的位置信息。例如,我想要模拟定位的经纬度为:-122.030237,37.331705,然后获取的详细位置信息为:United States CA Cupertino。

步骤:

  1. 使用Xcode模拟iOS设备的位置:通过GPX文件修改定位
  2. 更改地图服务
  3. 通过逆地理编码来获取位置信息;

image.png

1.1   准备gpx 文件( “iOS“选项下的”GPX File”)

image.png

虚拟坐标的获取之前,先了解下坐标系,以便进行转换

  1. iOS,原生坐标系为 WGS-84
  2. 高德以及国内坐标系:GCS-02https://lbs.amap.com/console/show/picker
  3. 百度的偏移坐标系:BD-09
  • 例子
<gpx version="1.1"
    creator="GMapToGPX 6.4j - http://www.elsewhere.org/GMapToGPX/"
    xmlns="http://www.topografix.com/GPX/1/1"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
    <wpt lat="31.255713422688655" lon="121.51010557702513">
        <cmt>北外滩</cmt>
</gpx>

1.2 gpx文件的使用

在调试App运行起来后,勾选要模拟的位置

image.png

  • 效果

image.png

image.png

1.3  更改地图服务【可选】

由于Apple在中国使用的是高德的地图服务,所以我们使用系统API进行逆地理编码国外的经纬度时获取不到位置信息,因此我们还需要把地图服务改为Apple在国外的地图服务。

  • 操作步骤:

关闭 蜂窝移动数据;打开 无线局域网,连接一个WiFi;打开 飞行模式;打开 (v _ p _n)app ;杀掉Apple自带的“地图”应用;

重新打开Apple自带的“地图”应用,可以看到地图应用界面中的“高德地图”logo不见了

1.4  通过逆地理编码来获取位置信息;

  • iOS平台开发高德SDK:定位AMapServices 及 Web服务 API :地理/逆地理编码geocodes的使用

iOS定位、地理/逆地理编码geocodes的使用、判断目标经纬度是否在大陆

image.png

//逆地理编码
@interface AMapReGeocode : AMapSearchObject

II、   直接hook CLLocation修改定位 (iOS逆向)

修改定_位; hook 原生API,直接替换为自己的即可

#import <CaptainHook/CaptainHook.h>
#import "WechatPodForm.h"
#import <UIKit/UIKit.h>
CHDeclareClass(CLLocation);
CHOptimizedMethod0(self, CLLocationCoordinate2D, CLLocation, coordinate){
    CLLocationCoordinate2D coordinate = CHSuper(0, CLLocation, coordinate);
    if(pluginConfig.location.longitude || pluginConfig.location.latitude ){
        coordinate = pluginConfig.location;
    }
    return coordinate;
}
CHConstructor{
    CHLoadLateClass(CLLocation);
    CHClassHook(0, CLLocation, coordinate);
}

III 、HTML5 地理定位

请查看原文:https://kunnan.blog.csdn.net/article/details/105145977

see also

目录
相关文章
|
Android开发 iOS开发 UED
探索未来:Android与iOS在智能穿戴设备上的较量
随着科技的飞速进步,智能穿戴设备已经成为我们日常生活中不可或缺的一部分。本文将深入探讨两大操作系统——Android和iOS——在智能穿戴领域的竞争与发展,分析它们各自的优势与挑战,并预测未来的发展趋势。通过比较两者在设计哲学、生态系统、用户体验及创新技术的应用等方面的差异,揭示这场较量对消费者选择和市场格局的影响。 【7月更文挑战第31天】
215 0
|
7月前
|
存储 算法 5G
可测多种时间频率信号精度的设备有哪些、标准时钟测试仪、gps时间校验仪
时间频率综合测试仪用于分析时间频率信号的精度与特性,支持多种标准,如B码、NTP、PTP等。其发展趋势包括:1. 高精度化,满足5G等新兴领域需求;2. 智能化,实现自动校准与故障诊断;3. 集成化多功能化,整合多参数测量功能;4. 小型化便携化,便于现场使用;5. 高速实时处理,提升数据处理能力;6. 网络化远程控制,支持远程操作与管理。例如SYN5104型设备,在多项指标上达到高精度,并具备网络接口和自动存储功能。
|
10月前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
1314 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
1044 1
|
测试技术 Linux 虚拟化
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
1070 3
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
|
测试技术 开发工具 iOS开发
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
这篇文章是iOS自动化测试方案的第三部分,介绍了在没有MacOS系统条件下,如何使用WDA(WebDriverAgent)结合Python客户端库facebook-wda和tidevice工具,在Windows系统上实现iOS应用的自动化测试,包括环境准备、问题解决和扩展应用的详细步骤。
2444 1
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
|
测试技术 Linux Android开发
i2c总线及设备测试工具i2ctools:i2cdetect、i2cdump、i2cget、i2cset
本文介绍了i2ctools工具集的使用,包括i2cdetect、i2cdump、i2cget和i2cset,这些工具有助于I2C设备的开发和调试,通过检测设备、读写寄存器和数据块来提高开发效率。
3405 1
|
测试技术 数据安全/隐私保护 iOS开发
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
iOS自动化测试方案的第四部分,涵盖了基础环境准备、iPhone虚拟机设置、MacOS虚拟机与iPhone真机的连接,以及扩展问题和代码示例,确保读者能够顺利完成环境搭建并进行iOS自动化测试。
2003 0
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
|
测试技术 虚拟化 iOS开发
iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
这篇文章是iOS自动化测试方案的第二部分,详细介绍了在Xcode开发者工具中构建WebDriverAgent(WDA)应用到iPhone的全过程,包括环境准备、解决构建过程中可能遇到的错误,以及最终成功安装WDA到设备的方法。
1235 0
iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
|
测试技术 开发工具 虚拟化
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
这篇文章提供了一份保姆级的教程,指导如何在MacOS虚拟机上安装Xcode,包括环境准备、基础软件安装以及USB扩展插件的使用,以实现iOS自动化测试方案的第一步。
1453 0
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程