如果用户明确拒绝了此应用程序的授权,或者在“设置”中禁用了位置服务,它将返回“拒绝”状态。我怎么知道它的确切原因?

最佳答案

我已经做了这两个功能来检查每种情况

如果用户明确拒绝了您的应用程序授权,则可以像这样检查它,

+ (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/

10-10 20:47