从iOS8开始,定位做了一些改变,要到info.plist中去添加两个字段:
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
用于在定位时,系统弹出提示框,定制提示内容,显示到最下面的一行。
另外,代码上,也与过去iOS7以前的,有差异。
CLLocationManager *locationManager = [[CLLocationManager alloc]init];
locationManager.delegate = self;
[locationManager requestAlwaysAuthorization]; 这个地方,从iOS8开始才有。
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = kCLDistanceFilterNone;
[locationManager startUpdatingLocation];
同时delegate回调,也发生了一些调整:
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
switch (status) {
case kCLAuthorizationStatusNotDetermined:
if ([manager respondsToSelector:@selector(requestAlwaysAuthorization)])
{
[manager requestWhenInUseAuthorization];//--这个在xcode6.0之前的版本,会报编译错误。同时kCLAuthorizationStatusNotDetermined
}
break;
default:
break;
}
}