iOS8.0之前的定位

iOS8.0之前的定位

1. 测试环境:

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

2. 前台定位

// 1.导入CoreLocation框架以及对应的主头文件
        #import 


// 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 *)locations
        {
            NSLog(@"每当请求到位置信息时, 都会调用此方法");
        }

3. 后台定位

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


    iOS8.0之前的定位_第1张图片
    勾选后台模式location udpates.png

4. 定位额外设置

  • 可通过位置管理者来进行额外设置,如每隔多少米定位一次、定位精确度等
  • CLLocationManager(位置管理者)

5. 知识补充

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

6. 常见问题总结

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

你可能感兴趣的:(iOS8.0之前的定位)