IOS version >=8.0 下CoreLocation定位问题

最近发现执行startUpdatingLocation之后locationManager的代理方法都没有被调用,搜索了一下,得到以下信息:

1、在使用CoreLocation前需要调用如下函数【iOS 8及更高】:

  iOS 8对定位进行了一些修改,其中包括定位授权的方法,CLLocationManager增加了下面的两个方法:

  (1)始终允许访问位置信息

  - (void)requestAlwaysAuthorization;

  (2)使用应用程序期间允许访问位置数据

  - (void)requestWhenInUseAuthorization;

  示例如下:

  self.locationManager = [[CLLocationManager alloc]init];

  _locationManager.delegate = self;

  _locationManager.desiredAccuracy = kCLLocationAccuracyBest;

     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){

      [_locationManager requestAlwaysAuthorization];//添加这句
     }

  [_locationManager startUpdatingLocation];    

 

  2、在Info.plist文件中添加如下配置:

  (1)NSLocationAlwaysUsageDescription

  (2)NSLocationWhenInUseUsageDescription

  这两个键的值就是授权alert的描述(填不填没关系),示例配置如下[勾选Show Raw Keys/Values后进行添加]:

      

     

这样就可以正常定位了。

 

posted @ 2015-10-14 13:36  Kimi_Lee  阅读(129)  评论(0编辑  收藏  举报