【问题标题】:Swift 3 - Retreive location at all times [duplicate]Swift 3 - 随时检索位置[重复]
【发布时间】:2017-09-21 09:49:11
【问题描述】:

我有一个用于跟踪货车司机的应用。我需要能够每 30 秒左右获取位置 (x&y)。我有一个方法和一个计时器可以让我这样做。

我想知道如何(如果可能的话)无论应用程序是否处于活动状态,我都可以让它工作?

【问题讨论】:

    标签: swift mapkit core-location


    【解决方案1】:

    我最近开始搞乱核心位置,所以我的知识不是万无一失的。

    如果应用仍然活动但仅在后台运行,那么只要您将allowsBackgroundLocationUpdates 设置为true,您就会获得更新。但这可能会消耗电池,它可能会一直持续到您的电池没电为止。

    可能希望通过设置来避免不断的位置检查: pausesLocationUpdatesAutomaticallytrue

    但是,如果您确实将其设置为 true,那么如果您的司机在某个位置停留的时间过长(我不知道太长时间是什么意思),那么应用程序将完全停止跟踪位置,直到您将应用程序带到再次前景。我说的是基于:

    重要对于具有in-use授权的应用,暂停定位 在后台更新结束对位置更新的访问,直到 应用程序返回前台并能够重新启动位置 服务。如果您不希望位置更新完全停止, 考虑禁用此属性并将位置精度更改为 kCLLocationAccuracyThreeKilometers 当你的应用移动到 背景。这样做可以让您继续接收位置更新 以省电的方式。

    所以这有点棘手。您可能希望将 pausesLocationUpdatesAutomatically 设置为 true,但如果您的业务需求允许...在应用处于后台 1 小时后执行类似 stopUpdatingLocation() 的操作,以完全停止位置更新。

    【讨论】:

      【解决方案2】:

      是的,这是可能的。

      如果您的 iOS 应用即使在后台也必须保持监控位置,请使用标准位置服务并指定 UIBackgroundModes 键的位置值以继续在后台运行并接收位置更新。 (在这种情况下,您还应确保将位置管理器的 pausesLocationUpdatesAutomatically 属性设置为 YES 以帮助节省电量。)可能需要此类位置更新的应用示例是健身或逐步导航应用。

      如需了解更多信息,请查看Location and Maps Programming Guide

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-08
        • 2018-08-04
        • 2017-02-02
        • 1970-01-01
        • 2018-01-05
        • 2017-01-25
        • 2016-08-20
        • 2023-03-03
        相关资源
        最近更新 更多