背景定期取

时间:2017-07-17 14:04:00

标签: ios swift background-process background-mode

我想每隔30秒到1分钟在后台上传位置。可能吗? 我发现我可以设置UIApplicationBackgroundFetchIntervalMinimum。但我环顾这个常数告诉设备大约每30分钟取一次。有办法吗?感谢。

2 个答案:

答案 0 :(得分:0)

我不知道你每30秒上传一次位置的确切目的。不建议这样做。我认为您可以在 CoreLocation 框架中进行 MonitoringSignificationChanges 。只要位置发生重大变化,它就会给您更新。它有助于节省电池

通过以下方法根据重要的位置更改开始生成更新:

func startMonitoringSignificantLocationChanges()

此方法异步启动位置事件的传递,在您调用之后不久返回。位置事件将传递给您委托的locationManager(_:didUpdateLocations:)方法。要传递的第一个事件通常是最近缓存的位置事件(如果有),但在某些情况下可能是较新的事件。获取当前位置修复可能需要几秒钟,因此请务必检查委托方法中位置事件的时间戳。

更多信息: Apple Docs

答案 1 :(得分:0)

您的方法存在多个问题。大多数应用程序不允许在后台持续运行,就像您想要的那样。你得到约3分钟的背景时间,然后你的应用程序被暂停。导航应用程序是一个例外。如果您的应用是导航应用,则可以在后台持续运行。

除非您是导航应用,否则每30秒轮询一次GPS也是一个坏主意。您将迅速耗尽用户的电池。

同样每隔30秒上传用户的位置将使手机上的蜂窝/ WiFi无线电几乎持续通电,这将很快耗尽用户的电池。