2010-05-21 70 views
0

我知道有幾個應用程序假冒設備的位置,但具體是我想要做的就是使用從網址抓取的位置。設備的假位置(自定義)

我應該尋找什麼方向來設置設備上的位置。

我的情況是一個越獄的Wi-Fi iPad連接到一個連接。 nexus可以託管一個後臺服務,當接收到請求時,它會使用當前位置的gps數據進行響應。越獄後的ipad將有一個後臺服務,它可以通過提交一個請求給繫繩連接一服務來在一個時間間隔或者每個請求的基礎上(取決於我如何實現它)更新位置。然後這些數據將被設置在iPad上,並且請求位置的應用程序將獲得服務數據。

目標是重新創建位置faker應用程序的功能,但欺騙性位置例外來自nexus gps通過服務,但我還沒有找到如何設置設備的位置數據。我可以在每個應用程序的基礎上實現這一點,但是讓任何應用程序都可以使用它是非常棒的。

回答

0

掛鉤到核心位置或使用定位緩存似乎是執行此操作的最佳方法。儘管我還沒有實現任何東西。那就是要走的路線。

1

那麼,在iPhone上獲取位置的方式是通過CLLocationManager。如果你想獲得一個自定義位置,那麼只需將其子類並覆蓋startUpdatingLocation方法爲而不是調用超級,然後就自己調用委託方法。喜歡的東西:

@interface CustomLocationManager : CLLocationManager { 

} 
@end 

@implementation CustomLocationManager 

- (void) startUpdatingLocation { 
    [[self delegate] locationManager:self didUpdateToLocation:customLocation fromLocation:nil]; 
} 

@end 

然後,你可以這樣做:

CLLocationManager * manager = [[CustomLocationManager alloc] init]; 
[manager setDelegate:self]; 
[manager startUpdatingToLocation]; 
+0

但這隻適用於其他位置在當前應用程序管理器正確嗎?我正在尋找一個後臺服務運行,爲所有請求它的應用程序設置位置。 – AtomRiot 2010-05-21 21:23:23

+0

@AtomRiot有沒有辦法做到這一點在非越獄設備 – 2010-05-21 21:47:51

+0

是的,我知道。這是針對我的場景的一次性解決方案,在我的場景中它是一個越獄設備。那個事實在提到最初的問題 – AtomRiot 2010-05-21 22:03:03

2

核心位置呈現顯著的隱私和個人安全問題。出於這個原因,即使是越獄設備也很難破解或欺騙。據我所知,每次發出位置請求時都會計算位置(這就是爲什麼會耗盡電池的原因)。沒有可輕鬆設置的文件或設置。

爲了欺騙所有應用程序的位置,您必須修補Core Location調用的系統代碼。該系統代碼沒有文檔,因爲它全部是Apple專有的。出於某種原因,您必須找到反向設計Apple代碼的人。

最好的辦法是看看是否有自定義的進程在運行,管理位置,然後用你自己的一個進程替換整個進程,該進程只返回欺騙性的位置。

無論如何,您基本上必須重新創建Core Location調用的整個接口,以確保每個應用程序中的每個Core Location調用都能正常工作。您正在尋找API中沒有文檔的大量低級C編碼。得到它的可能性相當低。