在Xcode 11中,有一个新的后台模式,“后台处理”。我找不到任何关于这个新的背景模式的信息。
有没有包含这些信息的资源?
这种模式会以某种方式影响在后台使用位置更新(区域监控和SLC)的应用程序吗?
发布于 2019-09-25 22:49:08
目前还没有文档。但在WWDC2019中,他们解释了它是什么以及如何使用它。链接如下:
Apple WWDC 2019
假设你想在后台清理数据库以删除旧记录。首先,您必须启用后台
处理中
在您的
背景模式
功能。然后在你的
添加后台任务调度器标识:
然后在'ApplicationDidFinishLaunchingWithOptions‘方法中,向任务注册你的标识符。
BGTaskScheduler.shared.register(forTaskWithIdentifier: "com.example.apple-samplecode.ColorFeed.db_cleaning", using: nil) { task in
// Downcast the parameter to a processing task as this identifier is used for a processing request
self.handleDatabaseCleaning(task: task as! BGProcessingTask)
}
执行您希望在后台执行的工作,并将其放入操作队列中。在我们的例子中,清理函数将如下所示:
// Delete feed entries older than one day...
func handleDatabaseCleaning(task: BGProcessingTask) {
let queue = OperationQueue()
queue.maxConcurrentOperationCount = 1
// Do work to setup the task
let context = PersistentContainer.shared.newBackgroundContext()
let predicate = NSPredicate(format: "timestamp < %@", NSDate(timeIntervalSinceNow: -24 * 60 * 60))
let cleanDatabaseOperation = DeleteFeedEntriesOperation(context: context, predicate: predicate)
task.expirationHandler = {
// After all operations are canceled, the completion block is called to complete the task
queue.cancelAllOperations()
}
cleanDatabaseOperation.completionBlock {
// Perform the task
}
// Add the task to the queue
queue.addOperation(cleanDatabaseOperation)
}
现在,当应用程序进入后台时,我们必须在
..。
注意:
是一项新功能,用于调度将在后台执行的多个后台任务]。
这个后台任务将每周执行一次来清理我的数据库。查看可用于定义任务类型的属性。
发布于 2020-05-21 15:50:18
运行BGTaskScheduler任务需要后台处理模式。
BGTaskScheduler
一个用于调度任务的类,通过提交在后台启动应用程序的任务请求来运行。为后台任务配置应用程序为后台任务配置应用程序,方法是添加所需后台模式的能力,并添加任务标识符的白名单。
为后台任务配置应用程序
通过添加所需后台模式的功能和添加任务标识符的白名单,为应用程序配置后台任务。
发布于 2021-02-27 01:22:24
应用程序状态
foreground -> background -> suspended -> terminated
-当app处于后台模式时执行一些任务
要添加在后台模式下工作的功能,请执行以下操作
App Target -> Signing & Capabilities -> + Capability -> Background Modes
您可以找到模式列表,如下所示:
音频-后台录制/播放音频
位置-在后台模式下接收新的位置更新
后台任务
后台获取-后台应用程序刷新任务-在加载应用程序之前获取最新数据的时间为30秒。
后台处理任务-在系统友好的时间(例如,在应用程序成为后台之后)几分钟来完成大任务(清除视频内容)或优先任务(发送消息)
[后台会话]
https://stackoverflow.com/questions/57197958
复制相似问题