【问题标题】:CoreLocation - 访问监控
【发布时间】:2022-01-23 10:13:42
【问题描述】:

我在使用 coreLocation 的访问监控服务时遇到问题。当我使用访问监控时,位置更新不一致。在核心定位中究竟什么被认为是访问?

这就是我开始访问监控的方式

self.manager.startMonitoringVisits()

我还添加了所有 CLLocationManagerDelegates。

【问题讨论】:

  • “不一致”是什么意思?
  • @Paulw11,有时我会收到访问更新,有时即使我在某个地方呆了一段时间,我也没有收到任何访问更新。

标签: ios core-location


【解决方案1】:

documentation 对访问的定义非常模糊。据此article

报道

线条在什么是访问和什么不是访问的边缘变得模糊。潜入街角咖啡店一分钟可能不会触发访问,但在特别长的红绿灯处等待可能会触发。 Apple 很可能会在未来的操作系统升级中提高访问检测的质量,但现在您可能希望推迟依赖 CLVisit 来支持您自己的访问检测,因为这些用例对您的数据尽可能准确至关重要是。

CLVisit 有很多缺点,从arrivalDate 精度到horizontalAccuracy 精度。 不要依赖CLVisit,而是尝试使用Significant Location Change Service

【讨论】:

    【解决方案2】:

    我在使用访问跟踪的商店中有一个 app

    我发现访问监控非常准确。例如,我从来没有让它检测到红灯作为访问。将报告的访问时间与我所在位置的实际记录进行比较也非常准确。

    我所看到的唯一真正的不准确之处是实际的 GPS 坐标,这更多是因为在室内或在 gps 准确度降低的市中心区域。

    虽然 Apple 没有记录他们的算法是如何工作的,但我怀疑他们在确定访问时使用的不仅仅是 GPS;设备是否连接到车载套件?在“停止”之前和之后发生了什么类型的运动(如果运动在您之前和之后是平稳而快速的)。

    访问跟踪需要注意的一点是,您可能会收到一个初始的CLVisit,其中只有一个到达日期,然后稍后会收到一个填写了到达和离开日期的更新。

    您还可以预计,在您到达某个地点和您将初始的 CLVisit 发送给您的代理人之间会有一些延迟,但到达日期“回溯”到 iOS 确定访问开始的时间。

    【讨论】:

    • 在 locationManager 实例中是否有任何特定的配置?现在,我只是创建一个实例,设置一个委托,一旦获得始终许可,我就调用 startMonitoringVisits api。
    • 您需要确保您已启用后台位置更新并将后台位置功能添加到您的应用程序中。您还应该在didFinishLaunching 中实例化您的位置管理器,以便接收在您的应用未运行时检测到的访问。请注意,在您“向上滑动”杀死您的应用后,您可能不会获得访问。
    猜你喜欢
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 2011-01-19
    • 1970-01-01
    相关资源
    最近更新 更多