• iOS iOS9.0 的CoreLocation定位


    一、简介

    • iOS9.0如果当前处于前台授权状态,默认是不可以后台获取用户位置。
      • 如果在前台授权下,让其能获取到后台定位,该怎么办
        • 可以设置以下属性为YES,就可以继续获取后台位置,但是会出现蓝条
        • 使用注意:必须设置对应的后台模式,勾选后台模式:location updates
          @property(assign,nonatomic) BOOL allowsBackgroundLocationUpdates
    • 注意:iOS9.0 可以单次请求用户位置

      - (void)requestLocation  
      // 成功调用,locations位置数组,元素按照时间排序
      -(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations 
      // 失败调用
      -(void)locationManager:(nonnull CLLocationManager *)manager didFailWithError:(nonnull NSError *)error
      • requestLocation 作用:
        • 按照定位精确度从低到高进行排序,逐个进行定位。如果获取到的位置不是精确度最高的那个,也会在定位超时后,通过代理告诉外界(必须实现代理的-locationManager:didFailWithError:方法)
        • 不能与startUpdatingLocation方法同时使用

    二、实现步骤

    1、 前台定位

    • 1.导入CoreLocation框架和对应的主头文件
       #import <CoreLocation/CoreLocation.h>
    • 创建CLLcationManager对象,并设置代理 请求前台定位授权,并配置KEY

      配置KEY .png
      _locationM = [[CLLocationManager alloc] init];
        _locationM.delegate = self;
        if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) 
            {
                [_locationM requestWhenInUseAuthorization];
            }
    • 3.调用CLLcationManager对象的startUpdatingLocation方法进行更新用户位置
      [_locationM startUpdatingLocation];
    • 4.实现代理方法,接收位置参数
      -(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations

    2、后台定位

    • 方案一:在APP处于前台定位授权场景下,勾选后台运行模式update locations (如下图) 并且,调用以下方法,设置允许后台定位


      勾选后台模式.png
      if ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) {
         _locationM.allowsBackgroundLocationUpdates = YES;
      }
      • 注意:如果APP处于后台,则会出现蓝条
    • 方案二:请求前后台定位授权,并配置KEY

      [_locationM requestAlwaysAuthorization];
    转载:原文链接:http://www.jianshu.com/p/a9a94cbcb775

  • 相关阅读:
    [bzoj3172] [Tjoi2013]单词
    [luogu2664] 树上游戏
    [bzoj3307] 雨天的尾巴
    [bzoj3141] [HNOI2013]旅行
    [bzoj4515] [SDOI2016]游戏
    [bzoj3165] [HEOI2013]Segment
    Spring MVC-从零开始-view-直接返回页面不传data
    Spring MVC-从零开始-view-ViewResolver
    Spring MVC-从零开始-@RequestMapping结合@PathVariable (从URL路径中取值,作用于函数参数)
    Spring MVC-从零开始-@RequestMapping 注解headers 属性
  • 原文地址:https://www.cnblogs.com/bolin-123/p/5343156.html
Copyright © 2020-2023  润新知