2012-05-14 66 views
0

我對這項技術非常陌生,所以請幫助我。CLLocationManager - iPhone應用程序中的自定義位置管理器

我使用CLLocationManager獲取當前位置和我的應用程序具有顯示狀態,他已經允許當前位置或不即信息提示,當我們寫

[self.locationManager startUpdatingLocation]; 

其配備的缺省如果用戶點擊自定義設置不允許該消息提示並返回到我的應用程序自定義設置並關閉按鈕以獲取位置,我可以獲取用戶的當前位置。

如何實現這個東西,請大家幫忙。

在此先感謝

回答

15

一旦位置服務已經用戶拒絕爲您的應用程序它只能在常規設置重新開啓 - 所以告訴用戶,然後將它們發送到那裏。 (您可能需要使用一個UIAlertView中先通知他們。)

// If Location Services are disabled, restricted or denied. 
if ((![CLLocationManager locationServicesEnabled]) 
    || ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusRestricted) 
    || ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)) 
{ 
    // Send the user to the location settings preferences 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"prefs:root=LOCATION_SERVICES"]]; 
} 
+0

非常感謝,你解決了我的問題.... :) –

+3

不幸的是,使用'prefs:root = LOCATION_SERVICES' URL不再適用於iOS 5.1:[http://www.alexcurylo.com/blog/2011/11/04 /設置的URL /] –

0

您的問題的簡短答案是「是」。當用戶通過設置爲您的應用啓用位置服務時,它就好像用戶在提示時回答「是」。您可以檢查是否位置服務是通過代碼檢查授權狀態爲您的應用程序啓用,正是如此:

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized) 
{ 
    //Get user's current location 


} 
+0

謝謝您的回答,我的問題是,當用戶說,沒有最初用於獲取位置,然後希望得到的當前位置,這樣他就可以改變我的應用程序定製設置 –

+0

爲什麼在設備設置中免費獲取位置服務時需要進行自定義設置?無論如何,系統需要通知用戶改變了他或她的想法。您認爲如果只有您的應用程序知道它,系統才能保證用戶確實改變了主意?應該很明顯,系統需要提供接口以保證用戶的答案是正確的;系統通知每個應用程序。因此,如果用戶第一次選擇不授權您的應用,請將您的用戶引導至設置菜單以更改您的應用的選擇。 – Sunny

相關問題