通过程序在 USB 上模拟 iPhone(真实设备,而非模拟器)的位置

12

我可以通过准备一个带有一些坐标的GPX文件、将其添加到我的项目中、运行一个应用程序并在应用程序运行时选择位置,从而通过Xcode模拟位置。然后,我的整个iPhone的位置都会改变到那个位置(不仅仅是针对该应用程序)。

换句话说,当通过USB连接Mac时,可以使用Xcode控制iPhone的位置。

我想知道是否有一种自动化这种行为的方法?例如,我会以编程方式发送命令到我的iPhone,以更改其位置,而无需手动创建GPX文件、将其添加到项目中、运行虚拟应用程序并每次从UI中选择单个GPX。是否有一种方法,可能使用命令行工具?


@markedwardmurray 你有没有看到问题?当然我知道。我需要一种快速且自动化的方法来做这个,这就是整个问题的关键 :) - Can Poyrazoğlu
1
我明白了,只是确认一下 :) 在我的看法中,似乎您可能在启动应用程序后从调试面板设置了模拟位置。我不知道是否有办法通过命令行来实现这一点,但我很想跟进这个线程。 - markedwardmurray
2
是的,我的直觉告诉我这应该是可能的,除非出于安全/篡改原因,这是苹果对设备保持严格控制的事情。不过期待从这个帖子中学到更多。 - markedwardmurray
这个答案有帮助吗?https://dev59.com/kpjga4cB1Zd3GeqPQuXk#38352931 - SHN
1
而这个 https://dev59.com/nlkT5IYBdhLWcg3wf_tN#38632244。 - SHN
显示剩余4条评论
2个回答

2
您可以使用Instruments模拟位置更新:
通过自动化,它允许使用JavaScript编写脚本,从而设置位置并延迟下一个位置更新。
实际上,简单的位置设置将如下所示:
var target = UIATarget.localTarget();
var location = {
    latitude: 59.335435,
    longitude: 18.017269
};
var locationOptions = {
    speed: 2.78,
    altitude: 200,
    horizontalAccuracy: 10,
    verticalAccuracy: 15
};
target.setLocationWithOptions(location, locationOptions);

要运行此脚本,您需要从Xcode“Profile”应用程序。要执行此操作,请转到菜单产品→配置文件,您的应用程序将随着Instruments一起启动。在Instruments中选择“Automation”,然后使用上面的内容创建新脚本。
在自动化工具的左上角,您的应用程序应自动选为目标。
只需将脚本粘贴到脚本区域并按“运行”按钮即可。如果应用程序未启动,则将启动该应用程序。然后脚本将运行,并且您应该看到位置已在您的应用程序内设置。
您只需创建一个包含多个位置和位置选项的数组,然后通过它们进行循环。要进行一些延迟,您只需使用延迟命令即可。
var target = UIATarget.localTarget();

var locationOptions = {speed:2.78, altitude: 200, horizontalAccuracy:10, verticalAccuracy:15};
var locations = [
  {latitude: 59.335435, longitude: 18.017269},
  {latitude: 59.33618, longitude: 18.018288},
  {latitude: 59.337192, longitude: 18.01643},
  ...
  {latitude: 59.335769, longitude: 18.025336} 
];

for (var i = 0; i < locations.length; i++) {
    target.setLocationWithOptions(locations[i], locationOptions);
    target.delay(10);
}

参考:http://sergiinezdolii.blogspot.com/2015/02/ios-simulate-frequent-gps-location.html

本文介绍了如何在 iOS 应用中模拟频繁的 GPS 位置,以便于测试和调试应用对位置信息的处理。首先,需要安装 Xcode 和模拟器。然后,使用 GPX 格式的文件来定义模拟位置数据,并将其添加到项目中。最后,选择模拟器并启动应用,即可模拟位置信息。

0
您可以使用以下网站设置预定义路线GPX生成器。这将创建一个带有快速步行/跑步速度路线的GPX文件。根据我的研究,更自动化的方法似乎是不可能的。

是的,我知道这个,但不幸的是它不是我需要的东西,因为我需要一些可以在飞行中持续编程的东西。 - Can Poyrazoğlu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接