我可以通过准备带有一些坐标的GPX文件,将其添加到我的项目,运行应用程序以及在应用程序运行时选择位置来通过Xcode模拟位置。然后,我将整个iPhone的位置更改为该位置(不仅仅是该应用程序)。
换句话说,当使用Xcode通过USB连接时, 可以控制iPhone在Mac上的位置。
我想知道有没有办法自动化这种行为?例如,我将以编程方式将命令发送到我的iPhone以更改其位置,而无需手动创建GPX文件,将其添加到项目,运行虚拟应用程序以及从UI中选择单个GPX时间。有没有办法,也许使用命令行工具?
答案 0 :(得分: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“配置”您的应用程序。为此,请转到菜单产品→配置文件,您的应用程序将与仪器一起启动。在Instruments中选择“Automation”,然后使用body创建新脚本。
您的应用程序应自动选择为自动化工具左上角的目标。
只需将脚本粘贴到“脚本”区域,然后按“运行”按钮即可。 如果应用程序未启动,则会启动它。 然后脚本将运行,您应该看到该位置已在您的应用程序中设置。
您可以创建多个位置和位置选项的数组,然后循环浏览它们。要做一些延迟,你可以使用延迟命令。
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
答案 1 :(得分:0)
您可以使用以下网站设置预定义路线; GPX Generator。这将创建一个GPX文件,其中包含快速步行/运行速度的路径。根据我自己的研究,一种更自动化的方法似乎是不可能的。