回答
您無法直接訪問該警報。
如果用戶按下「不允許」,或者如果該應用程序無權使用位置服務,則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. iOS中的位置服務
- 2. 保存在服務器上的位置的接近警報
- 3. Appium 1.6 Android。 :位置警報
- 4. 角度2警報服務
- 5. iOS中的ALAssetsLibrary和位置服務6
- 6. 位置服務權限未保存iOS
- 7. iOS CLLocationManager打開位置服務
- 8. iOS 8中破解的位置服務
- 9. iOS本地警報
- 10. 如何在地理位置服務被拒絕時添加警報?
- 11. 檢查iOS是否通過應用程序顯示系統警報的可靠方法? (如位置服務等)
- 12. 當位置服務被ios關閉時獲取位置數據
- 13. 警報不會顯示位置
- 14. Javascript timed彈出警報與位置.href
- 15. jQuery警報箱固定位置問題?
- 16. Angularjs回報$位置URL
- 17. Android重複報警或服務?
- 18. 在android中啓動報警服務
- 19. Android - 立即啓動報警服務?
- 20. Android:警報和意圖服務
- 21. 爲Web服務器生成SCOM警報
- 22. Android報警和服務觸發器
- 23. TFS服務器端項目警報
- 24. 安卓服務和「警報窗口」
- 25. 顯示網絡服務裏面警報
- 26. 帶有位置監聽器回調的Android服務
- 27. 調用Web服務:javax.net.ssl.SSLException:收到致命警報:protocol_version
- 28. AngularJS服務回報狀態
- 29. 當前位置靠近銷位置時顯示警報視圖
- 30. 檢查iOS定位服務
這是一個很好的提示,但我發現在我得到這個回調之前顯示了警報,甚至是didChangeAuthorizationStatus回調。還有什麼我可以做的嗎? – elsurudo 2012-08-20 18:52:12
@elsurudo,你現在可能已經想通了,但是對於記錄來說,只要在CLLocationManager上啓動位置更新,Apple就會顯示該警報。如果您想直觀地告訴用戶爲什麼您要讓系統請求他們的位置,則需要爲此創建自己的用戶界面,並避免啓動位置管理器,直到確定用戶已輕按或滑動你的UI。 – clozach 2013-02-01 01:40:23