美文网首页
iOS8.0之前的定位

iOS8.0之前的定位

作者: 翻这个墙 | 来源:发表于2017-11-23 10:15 被阅读13次

    iOS8.0之前的定位

    1. 测试环境:

    • XCode7.0之前版本,例如XCode6.4版本;模拟器选择iOS8.0之前的版本
    • 原因 : XCode7.0(包含7.0)之后不支持iOS8.0之前的模拟器

    2. 前台定位

    // 1.导入CoreLocation框架以及对应的主头文件
            #import <CoreLocation/CoreLocation.h>
    
    
    // 2.创建CLLocationManager对象并设置代理
            self.locationM = [[CLLocationManager alloc] init];
            self.locationM.delegate = self;
    
    // 2.1 在定位前可设置位置管理者CLLocationManager相关属性,如精确度,定位距离等
            // self.locationM.distanceFilter = 100;
            // self.locationM.desiredAccuracy = kCLLocationAccuracyBest;
    
    // 3. 调用方法,开始更新用户位置信息
            [self.locationM startUpdatingLocation];
    
    
    // 4. 在对应的代理方法中获取位置信息
            -(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation > *)locations
            {
                NSLog(@"每当请求到位置信息时, 都会调用此方法");
            }
    

    3. 后台定位

    • 在前台定位基础上, 勾选后台模式Location updates


      勾选后台模式location udpates.png

    4. 定位额外设置

    5. 知识补充

    • 定位常识
    定位服务 标准定位服务 显著的位置变化定位服务
    定位规则 基于gps/基站/wifi定位, 具体使用哪种,苹果有自己规则 使用基站进行定位,所以必须要求设备有电话模块
    能否后台处理 程序关闭,就没法获取位置 当app被完全关闭时,也可以接收到位置通知,并让app进入到后台处理
    定位精度 定位精度相比于左面,精度不大
    耗电 耗电小,而且定位更新频率依据基站密度而定
    应用场景 要求定位及时,精度较高,并且运行时间较短 长时间监控用户位置,用户移动速度比较快(例如打车软件)

    6. 常见问题总结

    • 定位不到, 对应的代理方法不执行
      1. 检查运行的模拟器是否是iOS8.0之前的系统版本
      2. 检查模拟器是否设置位置数据
      3. 确保代码无问题(一般都是代理没有设置,或者位置管理器对象是局部变量,亦或是位置管理器对象没有被强引用)
      4. 绝逼是模拟器BUG, 请重置模拟器(是重置,不是重启)

    相关文章

      网友评论

          本文标题:iOS8.0之前的定位

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