检查 locationServicesEnabled 始终返回 YES,无论手动拨动开关决定是不是启用了位置服务
Posted
技术标签:
【中文标题】检查 locationServicesEnabled 始终返回 YES,无论手动拨动开关决定是不是启用了位置服务【英文标题】:check for locationServicesEnabled always returns YES, Irrespective of manual toggle switch to decide if location services are enabled检查 locationServicesEnabled 始终返回 YES,无论手动拨动开关决定是否启用了位置服务 【发布时间】:2011-09-02 08:32:44 【问题描述】:location = [[CLLocationManager alloc] init];
location.desiredAccuracy = kCLLocationAccuracyBestForNavigation ;
location.distanceFilter = 10 ;
location.delegate=self;
locationEnabledBool = [CLLocationManager locationServicesEnabled];
if (locationEnabledBool ==NO)
UIAlertView *locationAlert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled"
message:@"To re-enable, please go to Settings and turn on Location Service for this app."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[locationAlert show];
[locationAlert release];
else
[location startUpdatingLocation];
locationEnabledBool
的值始终为YES
,与是否启用定位服务无关。任何身体都可以帮忙吗?
【问题讨论】:
【参考方案1】:而不是
if (locationEnabledBool == NO)
//give error message
试试
if ( [CLLocationManager locationServicesEnabled] ==NO || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)
//give error message
我在链接上找到了这个。
Detecting whether location services are enabled for my app
【讨论】:
if ( [CLLocationManager locationServicesEnabled] == NO && [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) //give error message
在第一个 [ 括号 ] 和 && 而不是 ||【参考方案2】:
当您测试此代码时,您需要确保在设备上测试它,而不仅仅是使用 ios 模拟器。
另外,我建议您仔细检查该设备上的设置,以确保设置的第一页上的定位服务显示为关闭。
【讨论】:
感谢您的回复。我在设备上运行代码并检查位置服务在设置中是否显示关闭。而不是 if (locationEnabledBool ==NO) if (locationEnabledBool ==NO || ( [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)) 为我工作。以上是关于检查 locationServicesEnabled 始终返回 YES,无论手动拨动开关决定是不是启用了位置服务的主要内容,如果未能解决你的问题,请参考以下文章
LocationServicesEnabled:API 已弃用
CLLocationManager locationServicesEnabled 开启但个别关闭