iOS中的定位功能

2017-08-04  本文已影响0人  请叫我张折腾

iOS中的定位功能

CoreLocation框架(CoreLocation.framework)可用于定位设备当前的经纬度,通过该框架,应用程序可通过附近的蜂窝基站、WIFI信号或者GPS等信息计算用户位置。
iOS SDK提供了CLLocationManager、CLLocationManagerDelegate来处理设备的定位信息,包括获取设备的方向以及进行方向检测等。

iOS开发者使用CoreLocation.framework框架进行定位非常简单,CoreLocation框架的常用API主要有如下几个:

通过上述API不难看出,通过定位我们可以做什么?

1.定位常用属性和方法

1.0请求定位步骤

1.1获取定位权限

定位属于用户的隐私权限,所以当APP需要使用这一权限的时候,需要获取用户的授权.
在获取授权之前,我们必须把授权对应的key值 添加到info.plist文件中,否则可能会引起APP crash或者审核不通过.
跟定位相关的隐私权限主要有两种,

通俗的说,如果只是一次性定位,不需要持续定位的话,这俩实际并无区别.
而持续定位时这俩的差别,会单独在后面讲后台持续定位的时候提及.

1.2定位属性的应用

精确度desiredAccuracy

desiredAccuracy精确度越高,越耗电,属性接收double类型的值,也可以传系统给定好的值
系统给出的枚举类型有以下:

距离过滤distanceFilter

设置用于移动多少距离,重新进行定位
枚举类型同精确度,也是一个float值.

1.3位置信息的获取

通过代理方法,我们可以获取到更新后的位置信息.以下是位置具体属性的图示.

cllocation.png

1.3后台持续定位

之前产品提了一个需求,想持续上报司导的位置信息,这就需要用到我们的后台持续定位功能了.
使用后台定位需要以下设置:

background.png

     if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9.0")) {
        // 该模式是抵抗程序在后台被杀,申明不能够被暂停
        self.locationManager.allowsBackgroundLocationUpdates = YES;
        
    }
    self.locationManager.pausesLocationUpdatesAutomatically = NO;

为什么要进行以上设置呢?
因为iOS系统下,当APP进入后台时,过三分钟之后,APP会自动进入挂起模式,也就是说如果不做任何处理的情况下,定位会被系统终止掉.当用户再进入APP的时候,定位又重新开始.所以才说APP使用定位的授权选项,使用应用期间和始终其实区别不大.如果不想被终止,就得通过后台模式设置,向苹果声明,APP在后台需要操作的权限,这样定位功能才得以保留.

使用定位的授权选项,使用应用期间和始终,唯一的区别就是,当APP退到后台并持续定位时,使用应用期间的权限下,APP顶部状态栏会有个蓝色的条,提示用户当前APP一直在使用定位.而始终这个选项则不会.

说到这里,之前GAPP按照以上设置,功能正常,但是在提交appstore的时候被拒绝了,理由是,审核人员不认为我们的APP需要持续定位.后来在笔者申诉加重新提审的情况下,苹果体谅的给我们通过了.

持续定位优化方案,可以从以下几个维度考虑:

耗电测试:
1.位置相对固定时,自动更新位置和交替精度(精度非常精确和宽泛时定时切换)的对比实验;
2.位置更新比较频繁情况下,二者的对比

第一种情况下,自动更新位置能坚持8个小时左右,交替精度大概在6小时;
第二种情况下,由于位置变动时间只在一个小时左右,差别不太明显;

针对GAPP产品提出想要定时持续更新司导位置的需求,最终采取了第二种方案.

2.计算经纬度之间的距离

计算经纬度之间的距离所需步骤:

distance.png

3.地理编码&反地理编码

地理编码:输入地理名称,地理编码获得该位置的经纬度.

反地理编码:输入经纬度,输出对应位置的地理名称

地理编码步骤

反地理编码步骤

关于地理编码和反地理编码的实例,放到区域监听的demo里做一并说明.

4.区域监听 region

当用户进入或者离开某个区域的时候,对应进行某些操作
实例:打卡

笔者仿照钉钉写的打卡的小demo,大概功能如下:
1.当不在考勤范围内时,打卡显示外勤打卡,颜色区分显示,并提示当前打卡位置
2.当位置更换,进入考勤范围时,颜色改变,打卡显示正常打卡,并提示当前打卡位置

4.1区域监听步骤:

4.2注意点

上一篇下一篇

猜你喜欢

热点阅读