使用 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()
}
请参阅文档 URLSessionConfiguration.background(withIdentifier:)
如果 iOS 应用程序被系统终止并重新启动,则该应用程序可以使用相同的标识符来创建新的配置对象和会话,并检索终止时正在进行的传输的状态。此行为仅适用于系统正常终止应用程序。 如果用户从多任务屏幕终止应用程序,系统将取消所有会话的后台传输。此外,系统不会自动重新启动用户强制退出的应用程序。用户必须明确重新启动应用程序才能再次开始传输。
因此,如果用户终止应用程序,您的下载将被取消。我不确定你所说的“......大音量可能导致用户中途意外关闭应用程序”是什么意思。用户将如何关闭应用程序?如果他们从多任务屏幕将其关闭(在应用程序上向上滑动以将其终止),那么您的后台下载将被终止。