定期从服务器更新 blockerList.json

Periodically update blockerList.json from a server

我正在为 iOS 构建一个内容拦截器应用程序。

有什么方法可以在后台定期从服务器更新 blockerList.json 文件?

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

当且仅当后台任务可以改善用户体验时,您可以声明一个iOS应用有一个运行在"background"。也就是说,即使另一个应用程序在前台,您的应用程序也可能执行任务 "in the background".

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

好吧,假设您有充分的理由这样做;)

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

所以,首先是找到一个合适的 "background execution mode" 适合您的后台任务,并在您的应用程序的 Info.plist 中声明它。 (在你的情况下,合适的模式是 fetch"The app regularly downloads and processes small amounts of content from the network."

接下来是实现任务和必要的钩子(嗯,我的意思是 delegates),在你的情况下你需要实现 application:performFetchWithCompletionHandler。您还需要处理 "application state transitions".

这里有一些指向 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/