CLVisit如何运作?

时间:2015-09-17 23:12:43

标签: ios mapkit core-location region-monitoring

我正在开发一款非常依赖监控可能在多个地区/区域进行用户访问的应用。我目前正在尝试区域监控工作得很好,但是,位置回调并不像我想要的那样准确。我见过CLVisit,但那里的文档并没有很好地解释它,尤其是它的使用。

1 个答案:

答案 0 :(得分:7)

我认为你误解了CLVisits的概念。实际上您不需要创建任何Visit对象。 CLLocationManager委托方法由apple已确定的算法触发(有关详细信息,请参阅wwdc lecture)。这在CLLocationManager documentation ...

中进行了解释
  

获取访问地点

     

在iOS中,访问服务为需要有关用户访问的有趣位置的位置信息的应用提供重要位置更改服务的替代方案。例如,如果用户在一个位置延长一段时间,则该服务可能在用户到达该位置时生成事件,而在用户离开该位置时生成另一个事件。该服务适用于可能已经在使用重要位置更改服务并希望采用更低功耗方式的应用程序。您不会使用此服务来创建依赖于常规位置更新的导航应用程序或应用程序。

     

要开始传递与访问相关的事件,请将委托分配给位置管理器对象并调用其startMonitoringVisits方法。当位置管理器生成访问事件时,它会将该信息传递给其委托的locationManager:didVisit:方法。传递给您的代理人的事件数据仅包括您开始传递事件后发生的信息。换句话说,如果您在用户到达有趣位置后开始传递事件,则当用户离开该位置时系统传递的事件将不会反映实际到达时间。如果系统终止您的应用程序,则此服务会在准备好交付新的访问事件时重新启动它。

如果你看一下NSHipster中的这篇文章,它会引用CLVists的一些当前问题(适用于iOS 8.1)。它基本上可以说,如果你想要非常精确的基础设施不使用CLVisit。好像你做得对(至少现在)。

  

从iOS 8.1开始,CLVisit并不是那么精确。虽然开始和结束时间都是   通常在一两分钟内准确,线条在边缘变得模糊   什么是什么,什么不是访问。躲到角落咖啡店一分钟   可能不会引发访问,但等待特别长的红绿灯   威力。 Apple可能会提高访问检测的质量   未来的操作系统升级,但现在你可能想继续依赖CLVisit   支持您自己的访问检测用于您的数据至关重要的用例   尽可能准确。