检查用户是否接受该应用知道他的位置

时间:2013-10-01 16:38:23

标签: ios cllocationmanager

我想知道用户是否接受了该应用以检查其位置。如果“location = nil”用户未获得授权,这是真的吗?

coreLocationManager = [[CLLocationManager alloc] init];
[coreLocationManager setDistanceFilter:kCLDistanceFilterNone];
[coreLocationManager setDesiredAccuracy:kCLLocationAccuracyBest];
location = [coreLocationManager location];
[coreLocationManager startUpdatingLocation];

2 个答案:

答案 0 :(得分:11)

如果您想知道用户是否授权您的应用程序检查其位置,您必须使用

+(CLAuthorizationStatus)authorizationStatus;

此类方法返回CLAuthorizationStatus常量,该常量可以采用这些值;

typedef enum {
   kCLAuthorizationStatusNotDetermined = 0,
   kCLAuthorizationStatusRestricted,
   kCLAuthorizationStatusDenied,
   kCLAuthorizationStatusAuthorized
} CLAuthorizationStatus;

最后,要检查您的应用是否获得授权,您只需执行以下操作:

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized)
{
    // Your app is authorized!
}

希望这有帮助,您可以在documentation找到更多信息。

答案 1 :(得分:3)

您可以使用authorizationStatus方法执行此操作。

您可以使用:

if([CLLocationManager locationServicesEnabled] && 
   [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized)
{
  // Do your code
}

locationServicesEnabled用于检查设备上是否启用了位置服务。

参考CLLocationManager

  

authorizationStatus

     

返回应用程序使用位置的授权状态   服务。   + (CLAuthorizationStatus)authorizationStatus

     

返回值

     

指示应用程序是否有权使用的值   位置服务。讨论

     

给定应用程序的授权状态由   系统由几个因素决定。申请必须是   明确授权用户使用位置服务   当前必须为系统启用位置服务。   您的用户授权请求会自动显示   应用程序首先尝试使用位置服务。可用性

Available in iOS 4.2 and later.
     

在CLLocationManager.h中声明