我正在为 iOS 构建一个内容拦截器应用程序。
有什么方法可以在后台定期从服务器更新 blockerList.json 文件吗?
我不知道如何做到这一点,甚至不知道从哪里开始。
最佳答案
如果且仅当后台任务改善用户体验时,您可以声明一个 iOS 应用程序有一个在“后台”运行的任务。也就是说,即使另一个应用程序位于前台,您的应用程序也可能“在后台”执行任务。
但是,请对该要求非常挑剔 - 通常,实际上没有必要这样做。例如,在您的情况下,您可以在应用程序移至前台时加载列表,然后在应用程序位于前台时定期加载列表。在不必要的情况下在后台执行操作会毫无意义地耗尽电池电量 - 这是用户最讨厌的坏习惯之一!
好吧,让我们假设您无论如何都有充分的理由这样做;)
未声明此类后台任务的 iOS 应用程序将在停止在前台运行后不久停止执行。为了支持确实必须在后台执行某些操作的应用程序(即,当该应用程序不在前台时),有一些特定的“后台执行模式”(UIBackgroundModes
)可以用于声明您的应用想要在后台执行此类任务。
因此,首先是找到适合您的后台任务的“后台执行模式”,并在应用的 Info.plist
中声明它。 (在您的情况下,合适的模式是fetch
:“应用程序定期从网络下载和处理少量内容。”)
接下来是实现任务和必要的 Hook (嗯,我的意思是委托(delegate)),也就是说,在您的情况下,您需要实现application:performFetchWithCompletionHandler
。您还需要处理“应用程序状态转换”。
以下是 Apple 文档的一些提示:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html
关于ios - 定期从服务器更新 blockerList.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32828818/