【问题标题】:What Does startMonitoringSignificantLocationChanges uses to Deliver LocationstartMonitoringSignificantLocationChanges 使用什么来传递位置
【发布时间】:2017-01-30 17:13:00
【问题描述】:

我想知道 startmonitoringsignificantlocationchanges 使用什么来提供位置信息,是 GPS 还是 Wifi/互联网?我的理解是它使用蜂窝或 wifi,以了解设备是否有明显移动,但我不知道的是,在拾取位置时,它是否单独使用 GPS 来拾取位置。

我的发现是:我在城市火车上行驶了 30 公里,但在后台没有找到任何位置,在此过程中,我的 Wifi 和蜂窝数据已关闭。因此,请说明重要是否无法仅基于 GPS 提供位置。

【问题讨论】:

    标签: ios swift gps core-location


    【解决方案1】:

    在过去构建定位应用程序时,我假设 GPS 仅在调用 startUpdatingLocation() 时使用。在仔细检查了文档之后,Apple 没有明确说明重要位置更改是否可以使用 GPS,但它是一种省电选项,并且他们的文档指定它“需要存在蜂窝硬件”,这让我非常确定我的假设(和你的)是正确的。我会暂时搁置一下,以防有硬件专家肯定知道。您想要的文档:https://developer.apple.com/reference/corelocation/cllocationmanager

    【讨论】:

      【解决方案2】:

      与所有定位功能一样,它结合了手机、wifi 和 GPS。细胞的使用是主要的。我们的想法是尽量减少 GPS 的使用,以防止电池耗尽。

      您当然不能指望这会在电池关闭的情况下工作;实际上,如果您的代码在单元格关闭的情况下正确检查significantLocationChangeMonitoringAvailable,我会直观地期望答案是false

      (另请注意,除非您有带代表的位置经理,否则您不会收到任何事件。)

      【讨论】:

        【解决方案3】:

        正如这个答案“Hows does Significant Location Change work?”(以及 2013-2015 年的 WWDC 视频)中所解释的那样,显着位置变化监控使用一种称为 Cell Tower Triangulation 的技术。

        您可以将其视为与 GPS 三角测量几乎相同的机制,只是蜂窝硬件将用于测量与附近蜂窝塔的距离,而不是启动 GPS 硬件以从实际卫星获取信号。

        根据我的经验,我注意到这种方法的准确度约为。 1000米。它不使用 GPS 硬件,因此电池效率更高。它适用于粗略的位置更新。请参阅 WWDC 2013 会议 Harnessing iOS to Create Magic in Your Apps,其中演示者对这项技术进行了简要的引用。

        【讨论】:

        • 我的印象是它使用蜂窝三角测量来生成位置更改事件并启动 GPS 大约 10 秒,然后使用 GPS 获取位置。但是使用这种技术,我应该在测试时收到很少的位置更新,但我没有收到任何更新。可能是因为蜂窝数据和 wifi 已关闭,即使蜂窝网络和 GPS 可用,它们也不足以提供位置。对此有什么解释吗?还是正常的。
        • 在 iOS 9+ 中,您可以使用 (requestLocation)[developer.apple.com/reference/corelocation/cllocationmanager/… API 从 GPS 硬件获取单一、高精度的定位。之后位置管理器将自动关闭。还有很多其他注意事项,例如更新 plist、setAllowsBackgroundUpdates、位置授权等。另外,不要忘记点赞 :)
        猜你喜欢
        • 1970-01-01
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多