为什么CLLocationManager总是返回true?
我正在使用[CLLocationManager locationServicesEnabled]
函数来获取是否启用位置服务的状态。 我保持viewDidLoad
方法中的代码。
if(![CLLocationManager locationServicesEnabled]) { NSLog(@"No"); } else { NSLog(@"Yes"); }
当我第一次运行这个应用程序时,它返回Yes
。 为什么? 它应该返回我No
。 当我没有select“允许”或“不允许”选项时就是这种情况。 我意味着我既不允许也不允许,但是在我viewDidLoad
我已经得到了。
现在我select“不允许”,并再次加载相同的viewController
。 这个时候至less应该还给我No
,但是我还是得到了。 为什么?
与CLLocationManager
混淆很多。
有任何想法吗?
locationServicesEnabled
返回是否在设置上启用位置服务。如果在设置中启用,则此函数始终返回YES
。
从文档
locationServicesEnabled
返回一个布尔值,指示设备上是否启用位置服务。
讨论
用户可以通过切换“常规”中的“位置服务”开关,从“设置”应用程序启用或禁用位置服务。
您应该在开始位置更新之前检查此方法的返回值,以确定用户是否为当前设备启用了位置服务。 如果此方法返回NO,并且始终启动位置更新,则核心位置框架将提示用户确认是否应重新启用位置服务。
用户允许/拒绝的应用程序权限(在警报视图中)不会影响此方法的返回值。
如果您想知道用户是否授予访问位置的应用程序权限,则可以使用authorizationStatus 。