2011-04-02 64 views
3

我正在開發一個使用位置服務的iOS應用程序。該應用在iPhone(3GS和4)上運行良好,但在iPad上運行時不會請求位置服務。也就是說,用戶永遠不會被要求啓用位置服務,應用程序也不會出現在「設置」應用程序的位置服務部分。定位服務不會在iPad上激活

我見過一些論壇文章描述類似的問題,但所有這些都通過iTunes(通過特設分發)安裝在iPad上的應用程序解決,而不是通過Xcode運行它,或通過重置位置警告。我在iPad,iPad 2和iPad模擬器上嘗試了這兩種解決方案,都無濟於事。

我們使用以下代碼來啓用位置服務更新。我們通過設備調試和NSLog的安置驗證了我們的代碼正在運行。

- (id)init { 
    [super init]; 

    if (clManager == nil) { 
     clManager = [[CLLocationManager alloc] init]; 
    } 
    clManager.delegate = self; 

    [self startLocationMonitoring]; 

    return self; 
} 

- (BOOL)isLocationAvailable { 
    return [CLLocationManager significantLocationChangeMonitoringAvailable]; 
} 

- (void)startLocationMonitoring { 
    if ([self isLocationAvailable]) { 
     [clManager startMonitoringSignificantLocationChanges]; 
    } else { 
     // handle lack of Location Services 
    } 
} 

回答

4

這可能不會回答你的問題,但可能有助於某人。 WiFi iPad型號不支持重要的位置更改(significantLocationChangeMonitoringAvailable方法返回NO),startMonitoringSignificantLocationChanges在運行時似乎什麼都不做 - 它不會觸發錯誤委託方法,也不會提出藍色泡泡對話框詢問位置服務允許。

+0

非常感謝,這是我需要知道的。在我的應用程序中,我使用startMonitoringSignificantLocationChange,許多iPad和iPod用戶都報告說位置服務無法正常工作。我決定切換到startMonitoringLocations以支持這些用戶,以防重大更改位置更改監控可用返回NO。謝謝你的提示! – MyCSharpCorner 2012-03-13 04:45:41

+0

是的,這是正確的。 iPad 1 WiFi不支持它。我剛剛自己調試過。 iPad 1 WiFi + 3G支持它。我決定使用startLocationMonitoring,然後當我收到一個位置時再關閉它 - 這對我的目的來說很好。或者,您可以啓動位置監控並使用distanceFilter指定您自己的「重要」位置更改。 – bandejapaisa 2012-10-03 15:51:03

0

iPad有2種型號(wifi和wifi + 3G)。 http://www.apple.com/ipad/specs/

wifi型號沒有A-GPS支持。

如果您仔細閱讀規範,您會看到A-GPS僅適用於wifi + 3G型號,也許您正在使用wifi(only)型號。

但是,通過WIFI,iPad可以檢測位置,如果路由器提供相同的東西,這似乎不是你的情況。

你可以在iPad2 wifi + 3G版本上試試你的應用程序,你會發現它運行得很好。