2012-11-12 64 views
1

檢測按鈕按下我檢測用戶是否已經接受了我的應用程序使用位置服務的要求,我在這取決於這種接受的UI切換開關。他們第一次切換開關(打開)時,會觸發使用位置的請求。我想知道他們在該警報中按哪個按鈕。 (接受或拒絕)現在我只是把它切換開來,讓用戶再次按下它(然後檢測他們選擇了哪個選項)。從CLLocationManager授權警報

這是一種草率的那個樣子,所以我想知道是否有檢測這種特定警報的方式,也可以不是這樣做,因爲它是由OS,而不是應用程序觸發?我還沒有嘗試過,但想我可以使用只是普通的按鈕按下的UIAlertView委託方法,但希望更具體的東西。

UPDATE

我能夠通過僅註冊的通知,當我觸發定位請求(和示出了授權提示),以得到這個工作。應用程序處於非活動狀態(很像下拉通知欄)。我只是在應用程序變爲活動狀態時觸發通知,我只能在那裏查詢授權狀態並更新我的UI。我希望這可以幫助其他任何人如果他們想要即時處理授權狀態。

回答

5

沒有辦法攔截警報。然而,在CLLocationManagerDelegate方法中有一種方法叫didChangeAuthorizationStatus。這可能是最接近攔截警報的。

+0

這有效。我可能應該深入挖掘一下。我想我可以完成這項工作。謝謝! –

+0

解決一個問題,但創建另一個問題。讓我抓住變化接受,但如果他們拒絕......它在技術上沒有改變,所以它對我沒有任何幫助。解決方案在那裏......只需要弄明白。但我認爲這是繼續下去的最佳答案。 –

+0

我建議根據此答案中的委託方法進行觸發,然後使用我給出的方法來確定交換機的狀態。很簡單... – HackyStack

0

沒有辦法明確知道用戶選擇了哪個按鈕,因爲正如你所說,此警報來自OS。但是,您可以瞭解位置服務是否已啓用您的應用,並且知道這種方式。使用方法如這樣:

-(BOOL)locationServicesIsEnabled 
{ 
    if (![CLLocationManager locationServicesEnabled] || ![CLLocationManager  authorizationStatus]) 
    return NO; 
return YES; 
} 
+0

正如我所說的,雖然不是很清晰,我已經檢測用戶是否已經接受與否。我只想攔截警報,以便在一次操作中更新我的用戶界面,而不是破解它,或者讓用戶切換兩次開/關開關。 –

+0

沒有批准攔截它的方式,我不知道有任何黑客攻擊(未經批准的方式)。如果你想想要訪問的信息,那麼你應該很清楚,蘋果公司不會讓你這麼做......對不起。 – HackyStack

+0

絕對不會尋找「未經批准」,因爲這個應用程序目前在App Store中。只是尋找更好的方法。我將不得不嘗試提醒代表...也許能夠以這種方式將其視爲我的「黑客」。 –