2011-11-01 22 views
2

我在做this tutorial這將返回GPS座標。當我在iPhone上運行應用程序時,我首先要求UIAlertView請求訪問我的GPS座標的權限。獲取位置權限對話框的結果

我需要知道這個UIAlertView是從哪裏拋出的?它來自操作系統嗎? 我們可以捕捉這種方法嗎?當用戶點擊「允許」或「不允許」時,我可以將他的選擇打印到控制檯嗎?

如何以編程方式執行此操作?有這個事件嗎?

回答

3

此警報由OS顯示。用戶必須允許使用基於位置的API。您可以要求CLLocationManager獲取當前的authorizationStatus,並在狀態更改(將調用委託方法)時收到通知。請注意,用戶還可以稍後在設置應用中禁用位置服務。

+0

好的,例如說用戶點擊了「否」或不允許訪問GPS位置的權限。但用戶後來改變了主意,他需要授權訪問GPS。在那種情況下,我如何再次調用'UIAlertview'? – sharon

+2

@sharon - 你沒有。你沒有第一次給它打電話。您可以觀察授權中的更改,以便您可以選擇退出位置功能。但是你不能再要求用戶許可。當然,如果你注意到你沒有權限,你可以隨時解除你自己的警報。但他們不得不深入其設置以打開您的權限,您無法直接將其發送到那裏。 –

+0

從iOS5開始,您可以創建自己的「設置」按鈕並使其調用:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@「prefs:root = General」]];以啓用直接訪問設置。 – paiego

1

我假設你正在使用CLLocationManager。應用程序使用API​​的能力發生變化時,您的委託將獲取locationManager:didChangeAuthorizationStatus。

編輯: 您的應用程序第一次嘗試使用該服務時,系統會提示用戶。如果用戶回答否,則應用程序將無法使用該服務,除非他們轉到設置 - >常規 - >位置服務並更改應用程序的設置。

如果您查詢API的狀態並且被禁止,您可以自己彈出並指導用戶如何更改應用程序的設置。

+0

好的,例如說用戶點擊了「否」或不允許訪問GPS位置的權限。但用戶後來改變了主意,他需要授權訪問GPS。在那種情況下,我如何再次調用'UIAlertview'? – sharon

+1

我相信用戶將不得不轉到iPhone設置屏幕並更改您的應用程序的選定選項。 –