startUpdatingLocation不再适用于XCode 6.1

时间:2014-10-26 20:35:40

标签: ios cllocationmanager

我无法获得最简单的位置更新代码。我有一个位置应用程序,运行良好超过一年,现在当我尝试编译并运行它(升级到xcode 6.1后,没有更改代码),在调用startUpdatingLocation后,didUpdateLocations回调永远不会触发,我可以看到gps指示器永远不会出现在电池指示器旁边。 我已经启动了一个新的测试项目,除了尝试注册位置更新之外什么也没做,但结果仍然相同:设备或模拟器上没有位置更新。 以下是测试项目的单视图控制器的代码:

//ViewController.h
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>

@interface ViewController : UIViewController <CLLocationManagerDelegate>
{

}

@property (strong, nonatomic) CLLocationManager* locationManager;

@end


//ViewController.m
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.locationManager = [[CLLocationManager alloc]init];
    self.locationManager.delegate = self;
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    [self.locationManager requestWhenInUseAuthorization];

    [self.locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    NSLog(@"got a location");
}

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
    NSLog(@"Error: %@",error.description);
}
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
     NSLog(@"got a location");
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end

如果拥有最新版xcode的人可以创建这样的项目,除了接收位置更新,验证它是否有效以及完整地发布代码之外,那将是非常棒的。我已尝试在plist文件中添加内容以及所有其他类似问题的补救措施,但无济于事。

1 个答案:

答案 0 :(得分:1)

是的,新版本中的一些内容已经发生了变化,这可能会令人头疼。我遇到了同样的问题,这是为我here解决它的线程。

您需要添加以下行info.plist:

<key>NSLocationWhenInUseUsageDescription</key>
<string>The spirit of stack overflow is coders helping coders</string>

<key>NSLocationAlwaysUsageDescription</key>
<string>I have learned more on stack overflow than anything else</string>

请确保在尝试更新用户位置之前致电[CLLocationManager requestWhenInUseAuthorization][CLLocationManager requestAlwaysAuthorization]