我将在我的应用程序中的哪里运行后台线程,以便将数据上传到Firestore数据库。
该应用将在后台运行或终止,即使用户已关闭该应用,我仍需要将信息上传到服务器
该代码似乎可以执行线程,但是应该放在哪里?我可以将其放入applicationDidEnterBackground或applicationWillTerminate吗?
DispatchQueue.background(background: {
let checkPointWorker = CheckPointWorker()
checkPointWorker.writeCheckPointsToFirestore()
}, completion:{
// Background job finished
})
答案 0 :(得分:1)
您可以将代码放入applicationDidEnterBackground
/ applicationWillTerminate
内,但不能保证在将应用发送到后台或内部后,该应用处于活动状态会成功将其成功上传到firebase willTerminate完全取决于当时当前打开的应用程序的压力,并且诚实地说,如果它在不处于前台的情况下执行了广泛的任务,则该应用程序将被IOS关闭
您可以使用后台获取
https://medium.com/@vialyx/ios-dev-course-background-modes-fetch-70c18f9f58d5
并将其用于上传而不是下载,但最好是在再次打开应用程序时进行上传