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