4

可能重复:
确定用户是否拒绝了 CoreLocation 权限

我将如何检测用户是否在 iOS 应用程序中拒绝“使用我的默认位置”?

我想根据他们的选择向他们展示不同的视图控制器。

谢谢

4

4 回答 4

4

为此,您需要实现以下委托方法:

- (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error
{
    if([error code]== kCLErrorDenied)
        self.locationDenied = YES;

        switch ([error code]) {
        // "Don't Allow" on two successive app launches is the same as saying "never allow". The user
        // can reset this for all apps by going to Settings > General > Reset > Reset Location Warnings.
        case kCLErrorDenied:
            [appDelegate showAllowGPSLocationView];
        default:
            break;
    }

    self.locationDefined = NO;
}

您可以在 AppDelegate 中创建方法“showAllowGPSLocationView”。并向用户显示,您需要访问 GPS 位置。

希望它能解决您的问题。

快乐编码!

于 2013-01-29T10:18:06.560 回答
1
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {

    if (status == kCLAuthorizationStatusDenied) {
        // denied
    }
    else if (status == kCLAuthorizationStatusAuthorized) {
        // allowed
    }
}

实施CLLocationManagerDelegate委托有关详细说明,请参阅此处。为我工作。希望它有所帮助..

于 2013-01-29T10:12:19.943 回答
1

您可以尝试如下:

 #if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_4_2
    if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized))  
 #else 
    if ([CLLocationManager locationServicesEnabled])    
 #endif
于 2013-01-29T10:13:47.817 回答
1

我为此创建了一个功能,以两种方式解决问题:首先检查是否启用了位置服务(设备上的第一个位置设置),然后检查用户是否授权您的应用程序。

- (bool)locationAvailable
{
    if (!([CLLocationManager locationServicesEnabled]) || ( [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied))
        return FALSE;
    else
        return TRUE;
}
于 2013-01-29T11:34:39.717 回答