IOS4最近为特定的应用程序提供了启用/禁用位置服务的可能性。
我需要检测MY应用程序的此设置是启用/禁用。
首先我尝试过:
if ([CLLocationManager locationServicesEnabled])
{
....
}
然而,这指的是全球定位服务,而不是特定的应用程序设置。
第二次我曾尝试使用
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
...
}
可行但是在禁用服务应用设置的情况下会调用它,在其他情况下,例如,如果某个措施因某些原因失败,则会调用它。
我需要一个代码来检测是否允许我的应用程序使用位置服务。
我如何实现这一目标?
感谢您的支持
答案 0 :(得分:24)
来自locationManager: didFailWithError:
的文档如果用户拒绝您的应用程序 使用位置服务,这个 方法报告kCLErrorDenied错误。 收到这样的错误后,你 应该停止定位服务。
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
if ([[error domain] isEqualToString: kCLErrorDomain] && [error code] == kCLErrorDenied) {
// The user denied your app access to location information.
}
}
您可以找到其他错误代码here。
答案 1 :(得分:10)
我更喜欢使用
-(BOOL)locationAuthorized {
return ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized);
}
在locationServicesEnabled属性上,因为它引用的是手机级别,而不是您的应用程序。
答案 2 :(得分:1)
根据Apple docs on CLLocationManager,有一个名为+ (BOOL)locationServicesEnabled
的属性应该就是这样。