我想允許用戶通過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