码迷,mamicode.com
首页 > 移动开发 > 详细

iOS CoreLocation框架

时间:2018-11-17 13:19:27      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:star   systemv   inf   com   --   device   ios8   core   auth   

官方参考文档:https://developer.apple.com/documentation/corelocation/cllocationmanager

  • 导入CoreLocation框架和对应的主头文件

#import <CoreLocation/CoreLocation.h>
  • 创建CLLcationManager对象,并设置代理

_locationM = [[CLLocationManager alloc] init];
_locationM.delegate = self;
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) 
 {
    //iOS8.0+前台定位授权,并配置Info.plist文件:NSLocationWhenInUseUsageDescription
    [_locationM requestWhenInUseAuthorization];

    //iOS8.0+后台定位授权,并配置Info.plist文件:NSLocationAlwaysUsageDescription
   //[_locationM requestAlwaysAuthorization];
 } 
  • 调用CLLcationManager对象的startUpdatingLocation方法进行更新用户位置

[_locationM startUpdatingLocation];
  • 调用CLLcationManager对象的startUpdatingHeading方法进行更新设备朝向
[_locationM startUpdatingHeading];
  • 调用CLLcationManager对象的startMonitoringForRegion:方法进行监听指定区域
// 创建区域中心
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(29.12345, 131.23456);
// 创建区域(指定区域中心,和区域半径)
 CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:center radius:1000 identifier:@"广州"];
// 开始监听指定区域
[self.locationM startMonitoringForRegion:region];
  • 实现代理方法,接收位置更新参数

-(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations

 

  • 实现代理方法,接收方向更新参数:
-(void)locationManager:(nonnull CLLocationManager *)manager didUpdateHeading:(nonnull CLHeading *)newHeading
  • 实现代理方法,获取区域进入或者离开状态:
// 进去监听区域后调用(调用一次)
-(void)locationManager:(nonnull CLLocationManager *)manager didEnterRegion:(nonnull CLRegion *)region
{
      NSLog(@"进入区域---%@", region.identifier);
      [manager stopMonitoringForRegion:region];
}
// 离开监听区域后调用(调用一次)
-(void)locationManager:(nonnull CLLocationManager *)manager didExitRegion:(nonnull CLRegion *)region
{
      NSLog(@"离开区域---%@", region.identifier);
}

 


相关配置:

  • iOS8.0后台定位配置:

   技术分享图片

  • iOS8.0+:

  前台定位配置Info.plist文件:

  技术分享图片

  后台定位:

if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) 
 {
    //iOS8.0+后台定位授权,并配置Info.plist文件:NSLocationAlwaysUsageDescription
   [_locationM requestAlwaysAuthorization];
 } 

  配置Info.plist文件: 

  技术分享图片

  • iOS9.0后台定位补充:

可使用iOS8.0+的后台定位方法,也可按照以下方式添加。

勾选后台运行模式Locations Updates,并且调用以下方法,设置允许后台定位:

if ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) {
        _locationM.allowsBackgroundLocationUpdates = YES;
}

 

iOS CoreLocation框架

标签:star   systemv   inf   com   --   device   ios8   core   auth   

原文地址:https://www.cnblogs.com/Blueleaf-tech/p/9807913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!