ios - 定期从服务器更新 blockerList.json

标签 ios objective-c safari-content-blocker

我正在为 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

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

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

关于ios - 定期从服务器更新 blockerList.json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32828818/

相关文章:

ios - 在移动应用程序的 ionic 中创建嵌套列表

iphone - 我们可以将Core Data类添加到iOS中的框架吗?

ios - 将计算属性从类别转换为 Swift 扩展

ios - 我如何知道我的 iOS Safari 内容拦截器是否已启用?

ios - 在 iOS 中重新加载内容拦截器

swift - 带有字符串而不是文件的内容拦截器扩展

ios - UIView 在没有 UIViewController 的情况下获取宽度/高度

ios - 尝试访问 long double Math 宏和 long double 的精度

iphone - iOS变量名和内存管理

iphone - 使用非零原点初始化 UIImageView 的更好方法