2010-09-30 34 views
12

IOS4最近推出的可能性为启用/禁用位置服务为特定应用程序。如何检测我的应用程序的位置服务禁用?

我需要检测此设置是否为启用/禁用我的应用程序。

首先我曾尝试用:

if ([CLLocationManager locationServicesEnabled]) 
    { 
     .... 
    } 

然而,这指的是全球定位服务,而不是特定的应用程序设置。

我曾尝试使用

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error 
{ 
    ... 
} 

它的工作原理,但它被称为无论是在服务应用程序的情况下,设置残疾人和在其他情况下,像,例如,如果一项措施对一些失败原因。

我需要一个代码来检测是否允许MY应用程序使用位置服务。

我该如何做到这一点?

感谢您的支持

回答

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

根据Apple docs on CLLocationManager,有一个名为+ (BOOL)locationServicesEnabled属性应该做到这一点。

+0

这是我眼中首选的方法。谢谢! – 2013-01-31 13:49:16

+1

locationServicesEnabled位于设备级别。 authorizationStatus适用于单个应用程序。 – 2014-06-30 16:06:45

10

我更喜欢使用

-(BOOL)locationAuthorized { 
    return ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized); 
} 

在locationServicesEnabled财产,因为它指的是手机的水平,而不是你的应用程序。

相关问题