ste*_*nos 23 iphone xcode core-location ios ios-simulator
我想允许用户通过GUI在iPhone模拟器上设置GPS信息.
但我不确定如何实现这一点 - 似乎这个名为iSimulate的工具通过安装自己的SDK以某种方式做到这一点.但我无法弄清楚他们是如何"覆盖"/"破解"模拟器的.
谢谢!
Ort*_*ntz 47
添加了第二个答案,因为Xcode中现在有集成功能(≥4.2).有两种方法可以模拟位置更新:
<wpt>
仅使用标签:Run Code Online (Sandbox Code Playgroud)<?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>
wjl*_*wjl 12
iOS模拟器内置了完整的位置模拟.从"调试"菜单中,您可以浏览各种位置选项.
在NDA下发布的原始答案.
查看此页面右下角的条目.我在NDA之下所以我不能说什么,除了它为我节省了大量的汽油钱.:)
1:http://developer.apple.com/technologies/ios5/
ben*_*ado 11
据我所知,iSimulate没有采用任何黑客攻击.它是在模拟器上的应用程序内运行的代码,它通过网络与设备通信.当它从设备接收消息(触摸,GPS,加速)时,它通过调用应用程序的代码来模拟这些事件,就像系统触发它们一样.
例如,要接收GPS位置更新,您必须创建CLLocationManager的实例,然后将其中一个类配置为其委托.好吧,在iPhone模拟器上,您可以改为启动代码,将代码发送给您的代理.如果你只是像这样调用委托的方法:
[delegate locationManager:nil didUpdateToLocation:newLocation fromLocation:oldLocation];
Run Code Online (Sandbox Code Playgroud)
您的代码不必知道位置更新是假的.如果你想得到花哨的话,你可以创建一个新的类来实现CLLocationManager的所有公共方法,但是它会发送伪造的消息.(由于Objective-C是动态类型的,因此它不需要是子类,只要它响应您发送的所有消息.)
作为旁注,您可以使用这些编译器宏来保持代码模拟器:
#if TARGET_IPHONE_SIMULATOR
locationManager = (id)[[MyFakeLocationManager alloc] init];
#else
locationManager = [[CLLocationManager alloc] init];
#endif
Run Code Online (Sandbox Code Playgroud)
您可以在http://github.com/futuretap/FTLocationSimulator上查看我的FTLocationSimulator
它会读取Google地球生成的KML文件,以提供连续的位置更新.它还使用模拟的位置更新更新MKMapView中的蓝色userLocation点.
归档时间: |
|
查看次数: |
35751 次 |
最近记录: |