我使用iOS提供的后台下载功能在后台下载大文件。在sessionConfig中我设置了allowCellularAccess和isDiscretionary的选项。当没有足够的电源或蜂窝连接时,这会“暂停”下载。
import Alamofire
class BackgroundDownload {
var name: String
var progress: Double
var urlString: String
var request: DownloadRequest?
init(_ sessionName: String, urlString: String) {
name = sessionName
self.urlString = urlString
progress = 0.0
}
private lazy var backgroundManager: Alamofire.SessionManager = {
let bundleIdentifier = "\(Bundle.main.bundleIdentifier!).background"
let sessionConfig = URLSessionConfiguration.background(withIdentifier: bundleIdentifier + "." + name)
sessionConfig.allowsCellularAccess = false
sessionConfig.isDiscretionary = true
return Alamofire.SessionManager(configuration: sessionConfig)
}()
func activate() -> Alamofire.SessionManager {
return backgroundManager
}
var backgroundCompletionHandler: (() -> Void)? {
get {
return backgroundManager.backgroundCompletionHandler
}
set {
backgroundManager.backgroundCompletionHandler = newValue
}
}
}
下载开始后,如果有意义,它会被正确暂停。但是,我想检测这些情况并向用户提供一些反馈,说明由于其中一种情况导致下载暂停。有没有办法找出下载是否被暂停以及为什么?