我想知道用户是否接受了该应用以检查其位置。如果“location = nil”用户未获得授权,这是真的吗?
coreLocationManager = [[CLLocationManager alloc] init];
[coreLocationManager setDistanceFilter:kCLDistanceFilterNone];
[coreLocationManager setDesiredAccuracy:kCLLocationAccuracyBest];
location = [coreLocationManager location];
[coreLocationManager startUpdatingLocation];
答案 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
用于检查设备上是否启用了位置服务。
authorizationStatus
返回应用程序使用位置的授权状态 服务。
+ (CLAuthorizationStatus)authorizationStatus
返回值
指示应用程序是否有权使用的值 位置服务。讨论
给定应用程序的授权状态由 系统由几个因素决定。申请必须是 明确授权用户使用位置服务 当前必须为系统启用位置服务。 您的用户授权请求会自动显示 应用程序首先尝试使用位置服务。可用性
Available in iOS 4.2 and later.
在CLLocationManager.h中声明