为什么CLLocationManager总是返回true?(why CLLocationManage

2019-10-17 12:12发布

我使用[CLLocationManager locationServicesEnabled]函数来获取位置服务是否启用或关闭的状态。 我在不停代码viewDidLoad方法。

if(![CLLocationManager locationServicesEnabled])
{
    NSLog(@"No");
}
else
{
    NSLog(@"Yes");
}

当我运行这个程序,它第一次返回Yes 。 为什么? 它应该返回我No 。 这是当我没有选择“允许”或“不允许”选项的情况。 意味着我既不允许,也不不允许但是在viewDidLoadYes

现在,我选择“不允许”,并再次加载相同viewController 。 此时至少它应该返回我No ,但我仍然得到了Yes 。 为什么?

这么多的困惑CLLocationManager

有任何想法吗?

Answer 1:

locationServicesEnabled回报位置服务是否在设置中启用了..如果在设置中启用,该函数返回YES所有的时间..

从文档

locationServicesEnabled

返回一个布尔值指示是否位置服务在设备上启用。

讨论

用户可以启用或通过切换位置服务在总开关禁用从设置应用程序的位置服务。

起始位置的更新,以确定用户是否具有当前设备启用位置服务之前,您应该检查这个方法的返回值。 如果此方法返回NO,你反正启动位置更新,将Core Location框架提示用户确认位置服务是否应该重新启用。

无论用户的允许/拒绝应用程序的权限(在alertview)不影响该方法的返回值。

如果你想知道用户是否已发出申请权限访问的位置,你可以使用authorizationStatus 。



文章来源: why CLLocationManager always returns true?