我可以通过准备一个GPX文件,通过
Xcode来模拟位置,将其添加到我的项目中,运行应用程序,并在应用运行时选择位置.然后,我的整个iPhone的位置被改变到那个位置(不只是那个应用程序).
换句话说,当使用Xcode通过USB连接时,可以通过Mac控制iPhone的位置.
我想知道有没有办法自动化这个行为?例如,我将以编程方式将命令发送到我的iPhone来改变它的位置,而不需要手动创建一个GPX文件,将它添加到项目中,运行一个虚拟应用程序,并且每次从UI中选择一个GPX.有没有办法,也许使用命令行工具?
解决方法
您可以使用仪器来模拟位置更新:
通过自动化它允许使用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“配置”你的应用程序.对于菜单产品→配置文件,您的应用程序将与仪器一起开始.在仪器中选择“自动化”,然后创建如上所述的带有主体的新脚本.
只需将脚本粘贴到脚本区域,然后按运行按钮.
如果应用程序未启动,它将启动.
然后脚本将运行,您应该看到该位置已在您的应用程序中设置.
您可以创建几个位置和位置选项的阵列,然后通过它们进入循环.要做一些延迟,你可以使用delay命令.
var target = UIATarget.localTarget(); var locationOptions = {speed:2.78,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