2017-07-17 42 views
0

我想每隔30秒将背景上传到1分钟。可能吗? 我发现我可以设置UIApplicationBackgroundFetchIntervalMinimum。但我环顾这个常数,告诉设备每30分钟取一次。任何方式来做到这一点?谢谢。定期获取背景

回答

0

我不知道你的上传位置每30秒的确切目的。不建议这样做。我认为你可以去MonitoringSignificationChangesCoreLocation框架。只要地点发生重大变化,它就会给你更新。它有助于在保存电池

启动基于以下方法显著位置的变化更新的一代:

func startMonitoringSignificantLocationChanges() 

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

富勒更多信息:Apple Docs

+0

我已经试过了。如果用户不移动,则不会调用此委托方法。我甚至尝试使用无声通知来告诉应用程序更新。发送一段时间后,APNs服务器将停止发送约20分钟。我也试过计时器。 –

+0

@CarlHung你应该*不*甚至做到这一点,https://stackoverflow.com/questions/41021733/is-using-core-location-for-performing-functionality-in-the-background-appropriat –

+0

发送静默推送通知通过APNS交付的次数太多不能保证。如果太多的请求会被忽略 –

0

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

每30秒轮询一次GPS也是一个坏主意,除非你是一个导航应用程序。你会很快耗尽用户的电池。

同样,每30秒钟上传一次用户的位置,手机上的蜂窝/ WiFi无线广播几乎不间断地上电,这将很快耗尽用户的电池电量。