CLVisit是如何工作的?

5

我正在开发一款应用程序,它大量依赖于监控用户在可能的多个区域/地区的访问。目前,我正在尝试使用区域监控,效果还不错,但是位置回调不够准确。我看到了CLVisit,但是现有的文档并没有很好地解释它的使用方法。


1
Voodoo。这是2014年WWDC核心位置会议的一个话题,链接为http://asciiwwdc.com/2014/sessions/706。 - Paulw11
1个回答

10
我认为您误解了CLVisits的概念。实际上,您不需要创建任何访问对象。CLLocationManager委托方法是由苹果确定的算法触发的(有关更多信息,请参见wwdc lecture)。这在CLLocationManager 文档中有解释...

获取用户访问位置

iOS系统中,访问服务提供了另一种方式来获取用户所访问的有趣地点的位置信息,用于替代重大位置变化服务。例如,如果用户在一个地方停留了很长时间,该服务可能会在用户到达该位置时生成一个事件,并在用户离开该位置时生成另一个事件。该服务适用于可能已经使用重大位置变化服务并希望以更低功耗方式进行的应用程序。您不应使用此服务创建导航应用程序或依赖于定期位置更新的应用程序。

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

如果你看过这篇NSHipster的文章,就会发现它提到了一些与CLVisit(iOS 8.1)相关的问题。文章基本上是在说,如果你需要非常精确的基础设施,请不要使用CLVisit。看起来你现在做得很好(至少目前是这样)。

从iOS 8.1开始,CLVisit并不是非常精确。虽然开始和结束时间通常准确到一两分钟,但在什么是访问和什么不是访问的边缘处,界限变得模糊。在咖啡店里待上一分钟可能不会触发访问,但等待特别长的红绿灯可能会。未来的操作系统升级中,苹果可能会改进访问检测的质量,但目前你可能需要暂时放弃使用CLVisit,而是选择自己的访问检测,以便在关键数据方面获得尽可能准确的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接