簡體   English   中英

為什么CLLocationManager總是返回true?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM