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