我正在为iOS构建内容拦截器应用。
有什么办法可以在后台定期更新服务器上的blockerList.json文件吗?
我不知道该怎么做,甚至不知道从哪里开始。
答案 0 :(得分:2)
如果且仅当后台任务改善了用户体验,您可以声明 iOS应用程序,以便在"后台"中运行任务。也就是说,即使另一个应用程序位于前台,您的应用也可能会在后台执行任务"。
然而,对这个要求非常挑剔 - 通常情况下,这并不是必须的。例如,在您的情况下,您可以在应用程序移动到前台时加载列表,然后在它位于前台时定期加载。在没有必要的情况下在后台做事会耗尽电池 - 这是用户最讨厌的坏习惯之一!
好吧,我们假设你有充分的理由去做这件事;)
尚未声明此类后台任务的iOS应用程序将在停止在前台运行后立即停止执行。为了支持真正必须在后台执行某些操作的应用程序 - 也就是说,当此应用程序不在前台时 - 有几种特定的"后台执行模式" (UIBackgroundModes
)可用于声明您的应用想要在后台执行此类任务。
所以,首先要找到一个合适的"后台执行模式"适合您的后台任务,并在您的应用的Info.plist
中声明。 (在您的情况下,合适的模式为fetch
:"该应用会定期从网络下载和处理少量内容。" )
接下来是实现任务和必要的钩子(嗯,我的意思是委托),在你的情况下你需要实现application:performFetchWithCompletionHandler
。您还需要处理"应用程序状态转换"。
以下是Apple文档的几点建议:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html