iOS 关于《定位服务》后台一直开启的解决办法
2017-03-30 本文已影响0人
Ran_戈
最近公司要做停车自动标记车辆位置的功能,这是室内定位反向寻车系统的前提条件,也是室内定位技术刚需!
解决思路:
刚开始想到该技术通过传感器中加速度计、计步器等数据,通过一系列算法计算分辨出,“人行”/“车行”。从而通过时间戳对照到GPS定位点,从而做到标记车辆位置到地图上!
经过测试iPhone 计步器和加速度计,发现当用户把手机锁屏或者APP挂起状态时候,计步器和加速度计,GPS都不会在后台发送数据,(因为要通过收集数据才能分析处理,所以挂起状态不发送数据从而不能从这思路解决问题)通过查阅资料,发现GPS定位服务可以在后台一直处于运行状态,以下是解决办法:
1、 首先把定位服务的后台启动模式打开 如图 1
图 12、设置CLLocationManager的属性,如图2。
提示: 1)2)3)4)一步不能少,少了APP就不能在后台一直运行了。
1) 定位管理者需要一直请求定位服务,requestAlwaysAuthorization;
2)需要允许后台更新数据更新,setAllowBackgroundLocationUpdates;
3) 设置不允许暂停自动刷新数据功能,pusesLocationUpdatesAutomatically = NO;
4)设置定位更新的最小距离为空,kCLDistanceFilterNone;
图 2然后经过测试,定位服务和计步器、传感器都能在挂起状态不能被KILL掉。
注意: 之前没有设置2的 3) 4)的时候,APP有时候会在16分钟,18分钟,20分钟左右不发送用户位置,和计步器、传感器数据。一定要把3)4)设置正确。