CLLocationManager geo-fencing/startMonitoringForRegion:与startMonitoringForSignificantLocationChanges:对比10分钟startUpdating调用

Ada*_*amG 24 iphone objective-c core-location cllocationmanager ios

我正在尝试设置一个应用程序,该应用程序可以在后台检查人员的位置,查看他们是否位于给定位置,如果是,则将ping发送到服务器.我们不想耗尽用户的精力,因此我们试图找出最佳解决方案.

我已经做了大量阅读,但我没有找到关于这些方法的大量信息.我会理解他们现在理解的优点和缺点

startMonitoringForSignificantChanges

描述:基于Wi-Fi和蜂窝塔的变化,系统唤醒了应用程序.

文件:

只要设备从之前的通知移动500米或更长时间,应用就会收到通知.它不应该比每五分钟更频繁地预期通知.如果设备能够从网络检索数据,则位置管理器更有可能及时发送通知.

优点:

  • 大多数电池效率

缺点:

  • 取决于Wi-Fi /蜂窝塔的变化
  • 只能假设每200米到2公里(如果不是更多在某些区域)
  • 更多关于准确性
  • 因此,不一致和不精确

10分钟的开始更新或"n分钟更新":

描述:这基本上要求应用程序有更多时间,当额外时间即将到期时,它调用[self.locationManager startUpdating],抓取位置并将后台线程扩展10分钟.

优点:

  • 一贯
  • 可以像您希望的那样准确无误地保持一致

缺点:

  • 必须每隔十分钟或更短时间拨打电话以保持应用在后台运行(即呼叫的n不能大于10)

问题:这对电池有什么影响?唤醒GPS并将其关闭会对电池造成更大伤害吗?我无法想象在后台运行一个简短的位置检查会耗尽电池那么多......但话又说回来,我不知道是什么导致GPS启动并获得可用的信号.

startMonitoringForRegion(geo-fencing):

简而言之,当您进入预定义区域时,您的应用会被唤醒.这是他们的古怪,它是最新的,并且有较少的文档.我无法找到关于"系统如何监控"过境点的良好描述.据我所知,这是一些非常聪明的算法,或者他们不断地对GPS进行ping操作,这会使其效率低于其他方法.

优点:

  • 简单的实施
  • 由系统管理,因此您不必发明自己的临时地理围栏只有在边界跨越时触发...没有不必要的数据只是为了换取电池命中而扔掉
  • 因此,应该是最好的这种事情,准确,由系统管理

缺点:

  • 人们质疑其有效性
  • 关于它是否有利于电池寿命或是否会耗尽电池寿命的巨大冲突.
  • 系统如何监控这个!?
  • 基本上,不确定的行为.

我想我的问题归结为startMonitoringForRegion:与电池寿命,一致性和精确度相比,在后台测试用户位置的其他方法.有没有人彻底测试过这个?或者在他们的应用程序中使用它并获得至少一些反馈?可能,就我的目的而言,权衡是在地理围栏和10分钟更新方法之间.(同样考虑到Apple公开谈论的iOS7会有一些后台任务......这会改变这两种方法之间权衡的微积分吗?)有没有人知道这两者的比较方式?

非常感谢!期待看到我们是否可以深入了解如何比较这些方法.

Zee*_*Zee 16

我一直在使用GPS进行车辆跟踪2年.学到了很多东西...根据我的经验,startMonitoringForRegion或Geo-fencing取决于单元格更改事件,didEnter或didExit事件在单元格/ wifi更改事件之前不会启动.所以它与电池消耗没有任何区别.但是它会进行额外的计算,这取决于当前监视的区域数量.即使Apple的Reminder应用程序也没有为基于位置的提醒提供良好的结果,因为它使用了地理围栏.

另一种方法是在每分钟m分钟后启动GPS n分钟是不错的选择,如果明智地完成,它不应该影响电池寿命.在高精度模式下,电池对GPS激活的确切影响是什么?例如,如果您使用kCLLocationAccuracyBest和distance-filter = 0启用GPS,您可以从字面上观察电池排水情况,很快您的设备也会开始变热.

如果我是你,我会用kCLLocationAccuracyBest(或者kCLLocationAccuracyNearestTenMeters使用更少的电池,如果准确度不是那么重要)和距离过滤器= 5(米),每10分钟激活一次GPS,持续5秒.在这种情况下,电池消耗将是不明显的.您可以使用类似的设置来解决您的特定情况,并最终找出最适合您的设置.

BTW:iPhone使用AGPS,A-GPS还使用网络资源在信号较差的情况下定位和使用卫星.因此,当您执行startUpdatingLocation时,它还将使用附近的cell tower信息.见http://en.wikipedia.org/wiki/Assisted_GPS