[英]why CLLocationManager always returns true?
我正在使用[CLLocationManager locationServicesEnabled]
函數獲取狀態,無論是否啟用了定位服務。 我將代碼保存在viewDidLoad
方法中。
if(![CLLocationManager locationServicesEnabled])
{
NSLog(@"No");
}
else
{
NSLog(@"Yes");
}
當我第一次運行該應用程序時,它返回Yes
。 為什么? 它應該返回我No
。 當我沒有選擇“允許”或“不允許”選項時,就是這種情況。 意味着我既不允許也不不允許,但是在viewDidLoad
我得到了Yes
。
現在,我選擇“不允許”,然后再次加載相同的viewController
。 至少在這個時候它應該給我No
,但是我仍然Yes
。 為什么?
與CLLocationManager
如此混亂。
有任何想法嗎?
locationServicesEnabled
返回是否在設置上啟用了位置服務。如果在設置中啟用了此功能,則此功能始終返回YES
。
從文檔
locationServicesEnabled
返回一個布爾值,指示是否在設備上啟用了位置服務。
討論區
用戶通常可以通過切換“位置服務”開關來從“設置”應用程序啟用或禁用位置服務。
您應該在開始位置更新之前檢查此方法的返回值,以確定用戶是否為當前設備啟用了位置服務。 如果此方法返回“否”並且無論如何您都開始位置更新,則“核心位置”框架會提示用戶確認是否應重新啟用位置服務。
用戶是否允許/拒絕應用程序權限(在alertview中)不會影響此方法的返回值。
如果要知道用戶是否已授予應用程序訪問位置的權限,則可以使用authorizationStatus 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.