Xcode更改了我的应用程序的位置服务

时间:2014-09-20 14:05:02

标签: ios xcode ios-simulator core-location location-services

目前我有一个使用用户当前地理位置的应用程序。

每当我在我的设备或模拟器上运行应用程序时,应用程序就会打开并立即将我的位置服务从“已授权”变为“未确定”。出于某种原因,这只发生在我和我的其他开发人员身上。

我不确定这是Xcode的问题,我昨晚更新到6.01,或者我的代码中的内容。

我已经尝试重置应用程序的位置服务,但是当我返回应用程序时,它会立即将其更改为“未确定”。

知道造成这个问题的原因是什么吗?有没有人遇到类似的问题?

以下是我的locationManager的代码片段。

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
NSLog(@"did change status");

if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
    NSLog(@"not determined");

} else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized) {
    NSLog(@"Authorized");
    [[NSNotificationCenter defaultCenter] postNotificationName:@"Location Services Authorized" object:self];

} else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusRestricted){
    NSLog(@"restricted");
    [[NSNotificationCenter defaultCenter] postNotificationName:@"Location Services Restricted" object:self];

} else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) {
    NSLog(@"denied");
    [[NSNotificationCenter defaultCenter] postNotificationName:@"Location Services Denied" object:self];

} else {
    NSLog(@"can not");

3 个答案:

答案 0 :(得分:1)

我在您的代码中没有看到您在呼叫requestWhenInUseAuthorization的位置。在位置服务工作之前,iOS8中要求用户进行授权。

每次启动位置服务时,只需在位置管理器上调用它,以确保您拥有权限(如果您已获得权限或已被拒绝,则无效)。

答案 1 :(得分:0)

可能是应用程序无法访问位置服务,它应该在设置屏幕关闭,你能检查一下吗? 继续设置>隐私>位置服务> "您的申请" >上

答案 2 :(得分:0)

我解决了这个问题!

事实证明,Apple对其核心位置管理器进行了一些更改。

您可以在此处详细了解:

http://nevan.net/2014/09/core-location-manager-changes-in-ios-8/

感谢您的帮助。