应用程序终止后如何恢复 URLSessionDownloadTask?

问题描述 投票:0回答:1

我正在使用 URLSessionDownloadTask 在我的应用程序中下载一个大型 ZIP 文件。但是,用户可能会在下载过程中关闭应用程序,尤其是在处理单个大文件时。在我的研究中,我找到了使用提供的按钮或功能暂停或停止下载的解决方案,但我希望能够在用户重新启动应用程序时从之前的进度恢复下载。这对于 URLSessionDownloadTask 是否可行,或者我应该考虑使用不同的库? (注意:我不是指在应用程序被杀死后在后台恢复下载。)

    self.fileDownloadUrl = "www.example.com"
    
    var identifier: String = "com.example.app"
    
    if let downloadUrl = self.fileDownloadUrl {
        let config = URLSessionConfiguration.background(withIdentifier: identifier)
        self.session = URLSession.init(configuration: config, delegate: self, delegateQueue: nil)
        let fileUrl = URL(string: downloadUrl)!
        let request = URLRequest(url: fileUrl)
        self.task = self.session!.downloadTask(with: request)
        return
    } else {
        // Error
        return self.unownedErrorPopUp.showAnimation()
    }
ios swift urlsession nsurlsessiondownloadtask
1个回答
0
投票

请参阅文档 URLSessionConfiguration.background(withIdentifier:)

如果 iOS 应用程序被系统终止并重新启动,则该应用程序可以使用相同的标识符来创建新的配置对象和会话,并检索终止时正在进行的传输的状态。此行为仅适用于系统正常终止应用程序。 如果用户从多任务屏幕终止应用程序,系统将取消所有会话的后台传输。此外,系统不会自动重新启动用户强制退出的应用程序。用户必须明确重新启动应用程序才能再次开始传输。

因此,如果用户终止应用程序,您的下载将被取消。我不确定你所说的“......大音量可能导致用户中途意外关闭应用程序”是什么意思。用户将如何关闭应用程序?如果他们从多任务屏幕将其关闭(在应用程序上向上滑动以将其终止),那么您的后台下载将被终止。

© www.soinside.com 2019 - 2024. All rights reserved.