在iPhone模拟器上模拟位置更新

时间:2010-01-13 11:23:16

标签: iphone ios xcode ios-simulator core-location

我想允许用户通过GUI在iPhone模拟器上设置GPS信息。

但我不确定如何实现这一点 - 似乎这个名为iSimulate的工具以installing an own SDK的方式做到了这一点。但我无法弄清楚他们是如何“覆盖”/“破解”模拟器的。

谢谢!

8 个答案:

答案 0 :(得分:46)

添加了第二个答案,因为Xcode中现在有集成功能(≥4.2)。有两种方法可以模拟位置更新:

  • 在iOS模拟器中,在“调试/位置”下,您可以指定一个恒定的纬度/经度,或者选择几个预定义的配置文件,例如“City Run”或“Freeway Drive”。
  • 在Xcode中,调试器中有一个新的位置图标,就在Step Out按钮旁边。它允许您选择全球多个硬编码城市,并为您的项目添加自定义GPX文件。关于Xcode中位置模拟的好处是它也适用于设备(​​只是不要忘记再次关闭它,否则你的自动时区将是错误的!)。自定义GPX文件也很好,但如果无法识别GPX文件,它有时会崩溃Xcode。请确保仅使用<wpt>标记:
<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode"> 
  <wpt lat="47.52789018096815" lon="7.385249894876031"></wpt>
  <wpt lat="47.52720984945248" lon="7.382647784661411"></wpt>
  ...
</gpx>

答案 1 :(得分:12)

iOS模拟器内置完整的位置模拟。从“调试”菜单中,您可以浏览各种位置选项。


根据NDA发布的原始答案。

查看this page上的右下角条目。我在NDA之下所以我不能说什么,除了它为我节省了大量的汽油钱。 :)

1:http://developer.apple.com/technologies/ios5/

答案 2 :(得分:11)

据我所知,iSimulate没有采用任何黑客攻击。它是在模拟器上的应用程序中运行的代码,它通过网络与设备通信。当它从设备接收消息(触摸,GPS,加速)时,它通过调用应用程序的代码来模拟这些事件,就像系统触发它们一样。

例如,要接收GPS位置更新,您必须创建CLLocationManager的实例,然后将其中一个类配置为其委托。好吧,在iPhone模拟器上,您可以改为启动代码,将代码发送给您的代理。如果你只是像这样调用委托的方法:

[delegate locationManager:nil didUpdateToLocation:newLocation fromLocation:oldLocation];

您的代码不必知道位置更新是假的。如果你想得到花哨,你可以创建一个新的类来实现CLLocationManager的所有公共方法,但是它会发送伪造的消息。 (由于Objective-C是动态类型的,因此它不需要是子类,只要它响应您发送的所有消息。)

作为旁注,您可以使用这些编译器宏来保持代码模拟器:

#if TARGET_IPHONE_SIMULATOR
   locationManager = (id)[[MyFakeLocationManager alloc] init];
#else
   locationManager = [[CLLocationManager alloc] init];
#endif

答案 3 :(得分:7)

您可能想在http://github.com/futuretap/FTLocationSimulator

查看我的FTLocationSimulator

它会读取Google地球生成的KML文件,以提供连续的位置更新。它还使用模拟的位置更新来更新MKMapView中的蓝色userLocation点。

答案 4 :(得分:4)

在Xcode 4.2中我们可以模拟。调试区域上有一个位置符号(当您运行应用程序时)。有一些预定义的位置。我们还可以add新的GPX文件

答案 5 :(得分:0)

Hy stephanos,

无法更改GPS的信息。它受到保护,我不相信iSimulate可以改变它。

据我所知,iSimulate是一个从设备向iPhone模拟器发送命令的工具,如加速度计,触摸,方向等,包括当前的GPS位置。

iSimulate的SDK可与该应用程序配合使用。您必须在设备中安装该应用程序并将sdk添加到您的项目中,这样您就不需要在正常运行的情况下将应用程序延伸并运行到设备。

干杯,
VFN

答案 6 :(得分:0)

答案 7 :(得分:0)

只是为了扩展@Ortwin Gentz回答:

如果您需要进一步配置gpx文件中的每个gps点。看看这个页面:

http://www.topografix.com/gpx_manual.asp

它告诉您如何提供更多详细信息,如特定点的速度和高度。