如果用户明确拒绝了此应用程序的授权,或者在“设置”中禁用了位置服务,它将返回“拒绝”状态。我怎么知道它的确切原因?
最佳答案
我已经做了这两个功能来检查每种情况
如果用户明确拒绝了您的应用程序授权,则可以像这样检查它,
+ (BOOL) isLocationDisableForMyAppOnly
{
if([CLLocationManager locationServicesEnabled] &&
[CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)
{
return YES;
}
return NO;
}
如果在“设置”中禁用了定位服务,则
+ (BOOL) userLocationAvailable {
return [CLLocationManager locationServicesEnabled];
}
而我正在使用它,
if([UserLocation userLocationAvailable]) {
//.... Get location.
}
else
{
if([UserLocation isLocationDisableForMyAppOnly]) {
//... Location not available. Denied accessing location.
}
else{
//... Location not available. Enable location services from settings.
}
}
P.S. UserLocation是用于获取用户位置的自定义类。
关于ios - 如何获得定位服务的确切授权状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27436791/