定期从服务器更新blockerList.json

时间:2015-09-28 17:42:18

标签: ios objective-c safari-content-blocker

我正在为iOS构建内容拦截器应用。

有什么办法可以在后台定期更新服务器上的blockerList.json文件吗?

我不知道该怎么做,甚至不知道从哪里开始。

1 个答案:

答案 0 :(得分:2)

如果且仅当后台任务改善了用户体验,您可以声明 iOS应用程序,以便在"后台"中运行任务。也就是说,即使另一个应用程序位于前台,您的应用也可能会在后台执行任务"。

然而,对这个要求非常挑剔 - 通常情况下,这并不是必须的。例如,在您的情况下,您可以在应用程序移动到前台时加载列表,然后在它位于前台时定期加载。在没有必要的情况下在后台做事会耗尽电池 - 这是用户最讨厌的坏习惯之一!

好吧,我们假设你有充分的理由去做这件事;)

尚未声明此类后台任务的iOS应用程序将在停止在前台运行后立即停止执行。为了支持真正必须在后台执行某些操作的应用程序 - 也就是说,当此应用程序不在前台时 - 有几种特定的"后台执行模式" (UIBackgroundModes)可用于声明您的应用想要在后台执行此类任务。

所以,首先要找到一个合适的"后台执行模式"适合您的后台任务,并在您的应用的Info.plist中声明。 (在您的情况下,合适的模式为fetch"该应用会定期从网络下载和处理少量内容。"

接下来是实现任务和必要的钩子(嗯,我的意思是委托),在你的情况下你需要实现application:performFetchWithCompletionHandler。您还需要处理"应用程序状态转换"。

以下是Apple文档的几点建议:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/

这是一个教程:http://hayageek.com/ios-background-fetch/