如何使用URLSessionDownloadTask打开应用程序并继续之前的进度

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

使用 URLSessionDownloadTask 下载 ZIP 文件。 然而,较大的音量可能会导致用户中途意外关闭应用程序。 我做了一个搜索。大多数搜索结果并没有关闭该应用程序。就是通过代码停止下载,重新运行。 当用户再次运行应用程序时,我想继续下载之前收到的进度。

可能吗?或者我应该使用另一个库??

(不是后台,是真正的关机)

    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.