核心位置不在ios模拟器上运行

时间:2014-10-04 15:08:22

标签: iphone xcode ios7 ios8 core-location

我的应用程序是由Xcode 5为ios7创建的,当我按下“获取位置”按钮时出现消息“MyApp想要使用您当前的位置”,现在我更新了Xcode并且在ios8核心位置不运行,缺少一些要添加的密钥?还是某个班级?在ios7中没有必要实现?

1 个答案:

答案 0 :(得分:3)

iOS 8 CoreLocation API已更改。

因此,您需要做的第一件事是将以下一个或两个密钥添加到Info.plist文件中:

NSLocationWhenInUseUsageDescription

NSLocationAlwaysUsageDescription

这两个键都带有一个字符串,该字符串描述了您需要位置服务的原因。您可以输入一个字符串,如“需要位置以查找您所在的位置”,如iOS 7中所示,可以在InfoPlist.strings文件中进行本地化。

接下来,您需要为相应的位置方法,WhenInUse或Background请求授权。使用以下电话之一:

[self.locationManager requestWhenInUseAuthorization]
[self.locationManager requestAlwaysAuthorization]

下面的代码适用于ios7和ios8。

if (_locationmanager == nil) {
    _locationmanager = [[CLLocationManager alloc] init];
}
_locationmanager.delegate = self;
_locationmanager.distanceFilter = kCLDistanceFilterNone;
if ([CLLocationManager  locationServicesEnabled]) {  // Check for iOS 8. Without this guard the code will crash with "unknown selector" on iOS 7.

if ([_locationmanager respondsToSelector:@selector(requestWhenInUseAuthorization)])           {
    [_locationmanager requestWhenInUseAuthorization];
}
[_locationmanager startUpdatingLocation];