美文网首页
iOS(定位一)后台定位和前台定位权限设置

iOS(定位一)后台定位和前台定位权限设置

作者: 双双依依 | 来源:发表于2016-10-11 16:50 被阅读0次

    一次定位及设置前台授权和后台定位

    1.  首先导入头文件           #import <CoreLocation/CoreLocation.h> 

    2. 添加位置管理者属性    @property(nonatomic,strong)CLLocationManager*mgr;

    3. 创建定位管理者 统一管理定位服务    _mgr= [[CLLocationManageralloc]init];

    4. 请求授权  (三种方法: 第一种是前台授权  第二种是前后台同时授权但是用户反感

                              第三种是设置前台定位及设置代码和info.plist设置后台定位)

              4.1  仅限于在前台使用时授权

                      1) 配置info.plist相关key (NSLocationWhenInUseUsageDescription)

                      2)做好低版本适配

                  if([_mgrrespondsToSelector:@selector(requestWhenInUseAuthorization)]){

                    //当应用在使用时可以使用定位服务(仅限于应用在前台使用时授权,一旦程  序到后台就停止定位)

                [_mgrrequestWhenInUseAuthorization];

               }

           4.2 应用始终使用定位服务(应用在前台和后台都能获取到定位服务)——这种方式用户反感

               1)配置info.plist相关key(NSLocationAlwaysUsageDescription)

               2)做好低版本适配

               if([_mgrrespondsToSelector:@selector(requestWhenInUseAuthorization)]){

            1.2.2应用始终使用定位服务(应用在前台和后台都能获取到定位服务) //用户反感

        //反感是因为授权提示是 :@"应用未打开时,允许定位"

                     [_mgrrequestAlwaysAuthorization];

              }

           4.3 应用开启临时后台(设置后台运行模式) (常用模式)

                    1) 配置info.plist相关key ( 这里需要新加一个选项 选择: Required background modes->打开items->选取App registers for location updates(定位后台运行的模式))  — 在ios8 之前只要设置这个就行了

                  2) 在ios8以后就是ios9的一个新特性需要再加上一句代码 才能执行这个功能

     IOS9新特性要求代码允许mgr执行后台运行模式

    _mgr.allowsBackgroundLocationUpdates=YES;//这是获取后台定位 前台授权还需要再设置 要是不要后台定位 这个就不要设置

    注意 : 这个时候 用户反感的那个就要取消掉不用,但是前台的授权模式还是要打开


    5. 设置代理   同时遵守协议   

    1.3获取数据设置代理  <遵守协议 :CLLocationManagerDelegate>

    _mgr.delegate=self;

    6. 开启定位               [_mgrstartUpdatingLocation];

    7. 实现CLLocationManagerDelegate 代理方法

    当更新位置时调用    底层是异步操作定位

    -(void)locationManager:(CLLocationManager*)manager didUpdateLocations:(NSArray *)locations{

    CLLocation : 位置对象包含了位置信息这个里面有很多其他的属性可以设置  点击头文件查看即可

    CLLocation*location = locations.lastObject;

    NSLog(@"%f,%f",location.coordinate.latitude,location.coordinate.longitude);

    停止定位

    [_mgr stopUpdatingLocation];

    }

     写到这里 基本的 定位(后台前台)都讲完了   还有其他的设置优化持续定位 如下: 

         优化持续定位  : (经纬度不变的情况下 就不用一直不断的去请求)

     1.  距离筛选器  减少不必要的回调

    _mgr.distanceFilter = 10;

    2  设置期望精确度  减少耗电量(减少能耗)

    _mgr.desiredAccuracy=kCLLocationAccuracyBestForNavigation;//这个还有很多枚举值可以根据自己需要的进行选取

      谢谢! !  希望能帮到大家

    相关文章

      网友评论

          本文标题:iOS(定位一)后台定位和前台定位权限设置

          本文链接:https://www.haomeiwen.com/subject/lzgpyttx.html