重大的位置变化 – 我们有什么保证?

我目前正在编写一个Mobile iOS应用程序,它使用iOS重要位置更改服务来pipe理大量地理围栏,启用和禁用地理围栏,因为我们从CoreLocation框架收到此消息。

在苹果开发者网站上,它说:

重大变更的位置服务仅在设备的位置发生重大变化(例如500米或更高)时才会提供更新。

真正抛出我的是“500米以上”,究竟是基于什么样的显着位置变更服务,我们实际上有什么保证?

这个API是否可靠用于跟踪区域之间的变化,以便当我们收到消息时,我们知道是时候重新分配地理围栏(假设每500米半径有less于20个地理围栏)?

我做了一个实验,在10个真实用户设备上运行一个使用重要的位置变更API的小应用程序两周(所以他们在上class,回家,周末外出等)。在大都市环境中进行testing米兰,意大利)。 大约有1800个重要的位置更新事件被注册。

核心成果是:

  • 平均每天大约有10个位置更新
  • CoreLocation声明的水平精度分布如下表所示
  • 然而,这并不能保证,一旦用户从最后一次位置更新定义的圆圈中移出,并且其水平精度,CoreLocation将发送新的位置事件。 换句话说,你不能确定用户在任何时候都在这个圈子里。
  • 如果某些其他应用程序在设备上使用GPS(例如在导航过程中),则到达我的应用程序的位置事件也更加准确。

分布表应该如下所示:第一列是以米为单位的水平精度,第二列是位置更新的百分比与第一列相等或更精确。

Accuracy Cumulative distribution 10m 23.76% 20m 23.76% 50m 23.76% 100m 49.86% 200m 65.09% 400m 65.31% 500m 65.31% 1000m 68.66% 2000m 92.64% 4000m 97.82% >4000m 100.00% 

换句话说,几乎2/3的位置更新部分更精确到200米。

500米是0.31英里 – 约三分之一英里。 他们没有指定它的确切程度,而是基于使用GPS和核心位置框架的testing,这非常准确(即使在代码中没有调用startupdatinglocation方法,它也应该跟踪脚步距离)。