iOS 13:BackgroundTasks 框架不执行后台作业
Posted
技术标签:
【中文标题】iOS 13:BackgroundTasks 框架不执行后台作业【英文标题】:iOS 13: BackgroundTasks framework does not executing background job 【发布时间】:2020-03-16 07:35:19 【问题描述】:当应用程序状态为后台/终止时,我需要执行特定任务。
任务必须从CoreData
表中获取数据并形成JSON
,然后使用REST API Call
使用URLSession.shared
同步到服务器。
我严格按照 Apple 的文档和几个博客从编码和 Xcode 配置的角度设置后台作业。
我已在应用程序进入后台后设置time-interval to 1
分钟为BGAppRefreshTask
。
request.earliestBeginDate = Date(timeIntervalSinceNow: 60)
知道,ios 系统有很多参数需要满足来执行后台抓取。 我等了 24 小时让应用程序运行后台作业,但甚至一次都没有执行作业。
请分享,如果有人有同样的经历并提出特定的解决方案或理由。
我关注的参考链接。
https://www.andyibanez.com/posts/modern-background-tasks-ios13/
https://medium.com/snowdog-labs/managing-background-tasks-with-new-task-scheduler-in-ios-13-aaabdac0d95b
【问题讨论】:
这里有同样的问题。我让它工作了一个星期。但是在我将第二个任务添加到白名单后,它就不再起作用了。它已提交并很好地注册。不知何故,系统只是不触发这些任务。我尝试在Xcode中使用一个命令来模拟运行,效果很好。 【参考方案1】:URLSession.shared
明确记录为
当您的应用未运行时,您无法执行后台下载或上传。
改为创建适合后台处理的会话:
let config = URLSessionConfiguration.background(withIdentifier: "foo")
let session = URLSession(configuration: config)
【讨论】:
感谢您的建议。但是,一旦执行后台作业,我就在 UserDefaults 中记录了一个时间戳。但实际上工作没有运行。不过,我会实施您对 REST API 调用的建议。以上是关于iOS 13:BackgroundTasks 框架不执行后台作业的主要内容,如果未能解决你的问题,请参考以下文章
带有 iPhone 13 的 iOS 15 不支持附近的交互框架