如何查找URLSessionDownloadTask是否被挂起(在自主模式下)

时间:2018-01-10 22:24:12

标签: ios swift alamofire

我使用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
        }
    }
}

下载开始后,如果有意义,它会被正确暂停。但是,我想检测这些情况并向用户提供一些反馈,说明由于其中一种情况导致下载暂停。有没有办法找出下载是否被暂停以及为什么?

0 个答案:

没有答案