2011-09-15 84 views
1

我們有一個完全依賴於不斷位置更新的應用程序,發現手機沒有獲得GPS時,即使設備連接到無線網絡,也不會調用didUpdateToLocation。爲了進一步測試,我在第四代iPod Touch上加載了相同的結果。CLLocationManager沒有更新Wifi上的位置

爲了說明,當GPS可用時,應用程序可以在iPhone 4上完美運行。我們沒有注意到這個問題,直到客戶在他的辦公室裏測試了他的iPhone 4,他知道他沒有獲得gps。

我認爲位置管理者應該支持wifi作爲確定位置的方法,但這似乎並不是這種情況。

這裏是我的代碼:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

if (locationManager==nil) { 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 

    NSLog(@"Accuracy best: %f distance filter none: %f", kCLLocationAccuracyBestForNavigation, kCLLocationAccuracyNearestTenMeters); 
} 
[locationManager startUpdatingLocation]; 

... 

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{.... 

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error 
{.... 

至於我想,沒有什麼特別的東西,你必須做的,使的LocationManager工作在WiFi - 現在我發現它不工作在所有。

BTW-我的手機設備是運行iOS 5 beta 7和iPod touch iOS 4.1的iPhone 4。

+0

您是否確認它在使用GPS的iPhone 4上運行? –

+0

是的。當GPS可用時,該代碼在iPhone 4上運行時完美無瑕。 –

+0

有趣。從我所看到的情況來看,沒有理由不應該這樣做。您可以查詢位置監測服務是否可用。也許他們只是不允許在該設備上。 [CLLocationManager locationServicesEnabled];應該返回一個布爾值。 –

回答

1

我發現didUpdateLocation正在被調用...一次,當應用程序第一次打開。它使我認爲,當你只處理wifi時,位置管理器只在 startMonitoringSignificantLocationChanges模式下。

0

嘗試調用:

[self.locationManager startUpdatingLocation]; 

可能的,你可能需要在self.locationManager配置位置管理器參數以及。

0

聽起來好像您的Wi-Fi接入點是未知的。爲了確保它不是編碼錯誤,請在模擬器中啓動Safari並查看它是否找到您的位置。如果沒有,問題是您未知的Wi-Fi接入點。解決方案是讓你的AP知道外界。爲此,請轉至http://www.skyhookwireless.com並閱讀說明。此站點可讓您更新XPS系統中的Wi-Fi接入點信息。注意:我花了六個星期才接通電話,但它現在起作用了。