我想每 30 秒到 1 分钟在后台上传一次位置。可能吗?我发现我可以设置UIApplicationBackgroundFetchIntervalMinimum
. 但是我环顾了这个常数,告诉设备大约每 30 分钟获取一次。有什么办法吗?谢谢。
问问题
99 次
2 回答
0
您的方法有多个问题。大多数应用程序都不允许像您想要的那样在后台连续运行。您将获得约 3 分钟的后台时间,然后您的应用程序将被暂停。导航应用程序是一个例外。如果您的应用程序是导航应用程序,您可以在后台连续运行。
除非您是导航应用程序,否则每 30 秒轮询一次 GPS 也是一个坏主意。您将很快耗尽用户的电池电量。
同样,每 30 秒上传一次用户的位置信息将使手机上的蜂窝/WiFi 无线电几乎持续通电,这将很快耗尽用户的电池电量。
于 2017-07-17T14:47:20.560 回答
0
我不知道您每 30 秒上传一次位置的确切目的。不建议这样做。我认为您可以在CoreLocation框架中使用MonitoringSignificationChanges 。每当位置发生重大变化时,它都会为您提供更新。它有助于节省电池。
通过以下方法根据重大位置变化开始生成更新:
func startMonitoringSignificantLocationChanges()
此方法以异步方式启动位置事件的传递,并在您调用它后立即返回。位置事件被传递到您的委托的locationManager(_:didUpdateLocations:)
方法。要传递的第一个事件通常是最近缓存的位置事件(如果有),但在某些情况下可能是较新的事件。获取当前位置可能需要几秒钟的时间,因此请务必检查委托方法中位置事件的时间戳。
更多信息:Apple Docs
于 2017-07-17T14:29:18.330 回答