3

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

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

2 回答 2

12

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

+(CLAuthorizationStatus)authorizationStatus;

此类方法返回一个CLAuthorizationStatus可以采用这些值的常量;

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

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

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

希望这会有所帮助,您可以在文档中找到更多信息。

于 2013-10-01T16:50:57.673 回答
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 中声明

于 2013-10-01T16:51:27.920 回答