BackgroundTasks
苹果在 iOS 13 中引入了 BackgroundTasks 框架,允许应用程序在后台状态下运行任务以保持应用内容更新。当应用程序启动时注册任务启动处理器,并根据需求进行调度。系统会启动应用程序后台并执行任务。系统决定启动后台任务的最好时机,并提供最多 30 秒的后台运行时间。在指定时间内完成您的任务并确认,否则系统会终止应用程序。
BGTasks
BGTasks 是对 iOS 提供的 BackgroundTasks 框架的包装,以确保易于使用案例的集成和配置,并在其中处理所有复杂的 BackgroundTasks 功能。框架中提供了以下功能:
- 轻松集成或注册用于后台同步/刷新的使用案例。
- 处理操作系统提供的所有复杂注册和回调机制。
- 根据以下策略优先使用案例
- 策略 [everyTime, onceADayAnyTime, every4Hours, every12Hours, every24Hours]
- 根据阈值或自上次同步时间的已过时间间隔将回调分配给使用案例。
- 内置分析支持以了解已安排、启动和完成多少任务。这还提供了针对使用案例级别的数据。
API用法
框架初始化
import BGTasks
let permittedIdentifiers: [BGTaskSchedulerType: String] = [
.appRefreshTask: "com.app.refresh.task",
.processingTaskWithConnectivityWithExternalPower: "com.processing.task.with.connect.with.power",
.processingTaskWithConnectivityWithoutExternalPower: "com.processing.task.with.connect.no.power",
.processingTaskWithoutConnectivity: "com.processing.task.no.connectivity"
]
let config = BGConfigurationProvider.RegistrationData(permittedIdentifiers: permittedIdentifiers)
BGConfigurationProvider.shared.configure(config: config)
所有标识符必须添加到项目的Info.plist
文件中的BGTaskSchedulerPermittedIdentifiers
键下。
用例注册
import BGTasks
let data = BGSyncRegistrationData(
identifier: "<unique-id>",
configuration: .init(strategy: .everyTime,
requiresNetworkConnectivity: true)) { completion in
//perform and call completion.
completion(true)
}
BGFrameworkFactory.registrationController().registerSyncItem(data)
安装
CocoaPods
CocoaPods 是一个用于 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 将 BGTasks 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它。
pod 'BGTasks', '~> 1.0.2'