0

我的应用程序在 iOS 5 上运行良好,我得到了普通用户的位置信息。但是在 iOS 6 上安装我的应用程序时,我的应用程序无法获取用户的位置(我没有询问权限位置的弹出窗口,并且在位置服务中我没有我的应用程序的图标。其他应用程序喜欢Instagram并且Path有iOS 6 定位服务中应用程序的图标)。当我使用下面的代码检查此问题时,NSlog显示:Unable to determine, possibly not available

我不明白为什么会这样。我尝试过其他应用程序,例如 Instagram 或 Path。我们仍然得到普通用户的位置。我在 中研究了 iOS 6 更改方法委托CLLocationManagerDelegate,但我认为这不是原因,因为我的应用程序没有请求获取用户位置的权限。

if ([CLLocationManager locationServicesEnabled]) {
        NSLog(@"Location Services Enabled");
        switch ([CLLocationManager authorizationStatus]) {
            case kCLAuthorizationStatusAuthorized:
                NSLog(@"We have access to location services");
                break;
            case kCLAuthorizationStatusDenied:
                NSLog(@"Location services denied by user");
                break;
            case kCLAuthorizationStatusRestricted:
                NSLog(@"Parental controls restrict location services");
                break;
            case kCLAuthorizationStatusNotDetermined:
                NSLog(@"Unable to determine, possibly not available");
                break;
            default:
                break;
        }
    }
    else {
        NSLog(@"Location Services Are Disabled");
    }
4

2 回答 2

1

我也有同样的问题。对于我的应用程序,之所以会出现这种情况,是因为我检查了 locationServices 是否已启用,并且仅当它为 true 时才开始更新位置 ([self.locationManager startUpdatingLocation]。)

+ (BOOL)locationServicesEnabled {
    if (([CLLocationManager locationServicesEnabled]) && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized)) {
        return YES;
    } else {
        return NO;
    } 
}

没有检查的 [self.locationManager startUpdatingLocation] 看起来不错,但可能会产生其他问题。

于 2012-09-27T13:29:48.913 回答
0

我认为您的问题是,您只需检查位置是否可用,但不要使用它。所以 iOS 从不请求许可,因为它没有被使用。你的支票工作正常!

使用像这样的教程,它会起作用。所以我为我解决了它!

于 2012-09-13T07:11:53.240 回答