我想允许用户通过GUI在iPhone模拟器上设置GPS信息。在iPhone模拟器上模拟位置更新
但我不知道如何实现这一点 - 似乎这个工具称为iSimulate这样做installing an own SDK。但我无法弄清楚它们是如何“覆盖”/“破解”模拟器的。
谢谢!
我想允许用户通过GUI在iPhone模拟器上设置GPS信息。在iPhone模拟器上模拟位置更新
但我不知道如何实现这一点 - 似乎这个工具称为iSimulate这样做installing an own SDK。但我无法弄清楚它们是如何“覆盖”/“破解”模拟器的。
谢谢!
据我所知,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
Hy stephanos,
GPS的信息不能改变。它受到保护,我不相信iSimulate可以改变它。
据我所知,iSimulate是一个从设备发送命令到iPhone模拟器的工具,如加速度计,触摸,方向等,包括当前的GPS位置。
iSimulate的SDK可以与应用程序一起使用。您必须在设备中安装应用程序,并将sdk添加到您的项目中,这样您就不需要在应用程序正常运行时始终保持运行应用程序。
干杯,
VFN
你可能会想看看我在FTLocationSimulator http://github.com/futuretap/FTLocationSimulator
它读取由谷歌地球生成提供持续的位置更新KML文件。它还使用模拟位置更新更新MKMapView中的蓝色userLocation点。
的iPhone模拟器已经完全模拟位置建。从“调试”菜单,你可以浏览你的各种位置选项。
原始答案在NDA下发布。
查看this page的右下角条目。我在NDA之下,所以除了它为我节省了大笔的天然气之外,我什么都不能说。 :)
在Xcode的4.2,我们可以模拟。调试区域有一个位置符号(当您运行应用程序时)。有一些预定义的位置。我们也可以add新的GPX文件
由于现在Xcode中的集成功能(≥4.2),添加了第二个答案。有两种方法来模拟位置更新:
<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>
该解决方案是正确的答案。 – deepwinter 2013-01-15 21:05:59
只是为了延长@Ortwin根茨答案:
如果您需要进一步配置的每一个GPS在GPX文件指向。看看这个页面:
http://www.topografix.com/gpx_manual.asp
它会告诉你到底如何可以提供般的速度和特定点的高度进一步的细节。
我提供了第二个答案描述在Xcode≥4.2现已整合式位置仿真功能:http://stackoverflow.com/a/9359093/235297 – 2012-02-20 09:53:30