回答
您無法直接訪問該警報。
如果用戶按下「不允許」,或者如果該應用程序無權使用位置服務,則CLLocationManager
將在其代表上呼叫locationManager:didFailWithError:
。錯誤域將爲kCLErrorDomain
,錯誤代碼爲kCLErrorDenied
。
在啓動位置管理器之前,您還應該檢查用戶是否允許爲您的應用提供位置服務。使用CLLocationManager
類方法locationServicesEnabled
進行檢查。
這裏的DOC:
locationServicesEnabled
返回一個布爾值指示是否位置服務在設備上啓用。
+ (BOOL)locationServicesEnabled
返回值 是如果位置服務啓用或NO,如果他們不。
討論 用戶可以通過切換設置>常規>位置服務中的開關,從「設置」應用程序完全啓用或禁用位置服務。
您應該在開始位置更新之前檢查此方法的返回值,以確定用戶是否爲當前設備啓用了位置服務。如果此方法返回NO,並且始終啓動位置更新,則Core Location框架會提示用戶使用確認面板詢問是否應重新啓用位置服務。
這有點危險,因爲這會確定位置服務是打開還是關閉,所以用戶可以打開定位服務,但是專門關閉您的應用。 – RickiG 2011-08-01 16:58:27
這並不危險,事實上Apple建議在啓動位置管理器之前檢查位置服務是否已啓用(請參閱文檔中的LocateMe示例代碼)。這是首先要檢查的。您還應該在代理中檢查kCLErrorDenied。 – 2011-08-01 20:44:46
我有點含糊,對不起。我的意思是不僅僅依賴於[CLLocationManager locationServicesEnabled],因爲用戶可能通常打開位置服務,但是關閉您的應用:) – RickiG 2011-08-02 09:41:05
你可以簡單地得到行動選擇如下圖所示:
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
if (status == kCLAuthorizationStatusAuthorizedAlways || status == kCLAuthorizationStatusAuthorizedWhenInUse) {
[self addRegion];
}
else if (status == kCLAuthorizationStatusDenied) {
NSLog(@"Location access denied");
}
}
確保設置位置管理的委託。
謝謝完美的解決方案.. – 2015-12-08 09:38:22
- 1. 位置服務警報
- 2. Android - 位置報警
- 3. 位置許可警報按鈕回撥
- 4. iOS:爲什麼啓動時會顯示兩次「打開位置服務」警報?
- 5. Android報警服務
- 6. iOS中的位置服務
- 7. 在所有視圖之上顯示位置服務警報
- 8. 如何處理「取消」按鈕彈出警報位置服務
- 9. 基於位置的服務中的報警系統
- 10. 保存在服務器上的位置的接近警報
- 11. 位置服務發送Android的天氣警報通知
- 12. 核心位置的警報
- 13. Appium 1.6 Android。 :位置警報
- 14. 報警服務作爲後臺服務
- 15. 角度2警報服務
- 16. 從服務呼叫警報
- 17. JSON服務調用任何回報
- 18. 自定義默認當前位置警報消息(iOS)
- 19. Phonegap IOS地理位置權限警報沒有顯示
- 20. iOS - 從警報視圖繼續調用
- 21. iOS 7後臺獲取位置服務
- 22. 位置服務權限未保存iOS
- 23. iOS CLLocationManager打開位置服務
- 24. iOS中的ALAssetsLibrary和位置服務6
- 25. 位置服務在IOS中,提示
- 26. iOS 8中破解的位置服務
- 27. 即時警報服務警報級別規範
- 28. 與服務警報對話框警報管理
- 29. iOS本地警報
- 30. 存儲在服務器中的位置座標的接近警報
這是一個很好的提示,但我發現在我得到這個回調之前顯示了警報,甚至是didChangeAuthorizationStatus回調。還有什麼我可以做的嗎? – elsurudo 2012-08-20 18:52:12
@elsurudo,你現在可能已經想通了,但是對於記錄來說,只要在CLLocationManager上啓動位置更新,Apple就會顯示該警報。如果您想直觀地告訴用戶爲什麼您要讓系統請求他們的位置,則需要爲此創建自己的用戶界面,並避免啓動位置管理器,直到確定用戶已輕按或滑動你的UI。 – clozach 2013-02-01 01:40:23