繁体   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