因为App面向的用户为国外用户,所以想在测试时尽量模拟真实用户的位置信息。需要使手机定位的经纬度在国外,然后使用系统API获取到经纬度,再使用系统API进行逆地理编码,以获取详细的位置信息。

例如,我想要模拟定位的经纬度为:-122.030237,37.331705,然后获取的详细位置信息为:United States CA Cupertino

要想实现我的调试目标,需要以下三步:
一、使用Xcode模拟iOS设备的位置;
二、更改地图服务;
三、通过逆地理编码来获取位置信息;

1. 使用Xcode来模拟iOS设备的位置
1.1 准备 gpx 文件
  1. 新建文件;
  2. 选择新建文件类型, “iOS“选项下的”GPX File”;
  3. 创建 gpx 文件;
  4. 确定 gpx 文件中您想要模拟地点的经纬度;

具体操作步骤如下:
新建文件 --> 文件类型 --> 创建文件

IOS修改定位的方法 ios如何修改定位地点_定位

IOS修改定位的方法 ios如何修改定位地点_IOS修改定位的方法_02

IOS修改定位的方法 ios如何修改定位地点_App_03

gpx文件的内容:

<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode">
    
    <!--
     Provide one or more waypoints containing a latitude/longitude pair. If you provide one
     waypoint, Xcode will simulate that specific location. If you provide multiple waypoints,
     Xcode will simulate a route visiting each waypoint.
     -->
    <wpt lat="37.331705" lon="-122.030237">
        <name>Cupertino</name>
        
        <!--
         Optionally provide a time element for each waypoint. Xcode will interpolate movement
         at a rate of speed based on the time elapsed between each waypoint. If you do not provide
         a time element, then Xcode will use a fixed rate of speed.
         
         Waypoints must be sorted by time in ascending order.
         -->
<!--        <time>2014-09-24T14:55:37Z</time>-->
    </wpt>
    
</gpx>

其中,lat="37.331705"为纬度值,lon="-122.030237"为经度值。经纬度的值可在 经纬度坐标拾取 中获取,选择你想要模拟的位置,然后复制经纬度数值,填写到gpx文件的lat=lon=位置即可,注意:纬度在前,经度在后

1.2 gpx文件的使用

在调试App运行起来后,勾选要模拟的位置,勾选后,您在App中获取到的经纬度即为您想要模拟位置的经纬度了。如下图:

IOS修改定位的方法 ios如何修改定位地点_定位_04


以上这种勾选方式需要在调试App每次运行起来后,都勾选一下,有点麻烦。裤裆里冒烟,当然啦😄,有另外一种简单的方式,那就是设置默认的模拟位置,把您想要模拟的位置设置为默认模拟位置就行了。这样,调试App每次运行起来后都会选择您的模拟位置,不用每次都去勾选一下,非常方便。设置方式:在XcodeEdit Scheme中进行设置,如下图:

IOS修改定位的方法 ios如何修改定位地点_定位_05

1.3 模拟位置后的效果

在iPhone真机上把调试App运行起来,并设置模拟位置后,你的iPhone真机定位位置就是你设置的模拟位置了,结果如下:

IOS修改定位的方法 ios如何修改定位地点_地理编码_06


你也可以打开百度地图、高德地图等地图App,查看你当前的位置,可以看到同样为:Cupertino - 库比蒂诺,这样你就可以随意模拟你想要的定位位置了😎。

2. 更改地图服务

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

2.1 更改地图服务

操作步骤:

  1. 关闭 蜂窝移动数据;
  2. 打开 无线局域网,连接一个WiFi;
  3. 打开 飞行模式;
  4. 打开 VPN 360 或其他VPN应用,连接VPN;
  5. 杀掉Apple自带的“地图”应用;
  6. 重新打开Apple自带的“地图”应用,可以看到地图应用界面中的“高德地图”logo不见了。

IOS修改定位的方法 ios如何修改定位地点_地理编码_07

IOS修改定位的方法 ios如何修改定位地点_定位_08

2.2 更改后的效果对比图
  1. 使用高德的地图服务时

IOS修改定位的方法 ios如何修改定位地点_地理编码_09

IOS修改定位的方法 ios如何修改定位地点_地理编码_10

  1. 使用Apple在国外的地图服务时

IOS修改定位的方法 ios如何修改定位地点_App_11

IOS修改定位的方法 ios如何修改定位地点_IOS修改定位的方法_12

3. 通过逆地理编码获取位置信息
  1. 准备一个demo项目,导入您想要模拟定位的gpx文件,并在XcodeEdit Scheme中设置为默认模拟位置;
  2. 运行demo项目到您使用的调试真机上,运行成功后,调试真机的定位位置就是您想要模拟定位的位置了;
  3. 再打开您真正想要测试的App(不要停止第二步运行的demo项目),则在该App中获取的经纬度就是您模拟的定位位置的经纬度,然后利用系统API逆地理编码出来的位置也是您模拟定位的位置信息。

我的测试中,想要模拟定位位置的经纬度为:-122.030237,37.331705,最后获取的详细位置信息为:United States CA Cupertino