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

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

但我不确定如何实现这一点 – 似乎这个名为iSimulate的工具通过安装自己的SDK来做到这一点。 但我无法弄清楚它们是如何“覆盖”/“破解”模拟器的。

谢谢!

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

例如,要接收GPS位置更新,您必须创build一个CLLocationManager实例,然后将其中一个类configuration为其委托。 那么,在iPhone模拟器,你可以改为启动代码,而不是假的消息发送到您的委托。 如果你只是像这样调用委托的方法:

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

您的代码将不必知道位置更新是假的。 如果你想要看起来,你可以创build一个新类来实现CLLocationManager的所有公共方法,而不是发送假消息。 (由于Objective-C是dynamictypes的,只要响应所有发送的消息,它就不需要是子类。)

作为一个方面的说明,您可以使用这些编译器macros保持代码模拟器只:

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

由于现在Xcode中已经集成了一些function(≥4.2),所以增加了第二个答案。 有两种方法来模拟位置更新:

  • 在iOS模拟器中,在“debugging/位置”下,您可以指定恒定的纬度/经度或select几个预定义的configuration文件,如“城市运行”或“高速公路驱动器”。
  • 在Xcode中,debugging器中有一个新的位置图标,就在Step Outbutton旁边。 它可让您select全球多个硬编码城市,并将自定义的GPX文件添加到您的项目中。 在Xcode中定位模拟的好处在于它也可以在设备上运行(不要忘记closures它,否则你的自动时区将会出错!)。 自定义的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> 

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


在NDA下张贴原始答案。

看看这个页面右下angular的条目。 我在保密协议下,所以除了为我节省了大笔的天然气之外,我什么都不能说。 🙂

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

你可能想看看我的FTLocationSimulator在http://github.com/futuretap/FTLocationSimulator

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

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

Hy stephanos,

GPS的信息不能改变。 它是受保护的,我不相信iSimulate可以改变它。

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

iSimulate的SDK与应用程序一起工作。 您必须在应用程序中安装应用程序,并将sdk添加到您的项目中,这样您就不需要将应用程序一直运行到设备上。

干杯,
VFN

只是扩大@Ortwin Gentz答案:

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

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

它告诉你如何提供进一步的细节,如特定点的速度和高度。