为什么 URLSession 没有在 iOS 10 恢复?

Why is URLSession not resuming on iOS 10?

在我的 iOS 下载管理器中

RCDownload 是一个 object,它包含下载的标题、url、下载状态和恢复数据位置

我有一个名为 defaultSession 的块变量,如下所示:

lazy var defaultSession: URLSession = {

        let configuration = URLSessionConfiguration.background(withIdentifier: "RCBackgroundDownloader")
        configuration.isDiscretionary = false
        configuration.sessionSendsLaunchEvents = true
        let session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)

        return session
    }()

我的应用能够暂停和恢复下载

我的简历函数如下所示:

func resume(download: RCDownload) {

        var data: Data!

        do {
            data = try Data(contentsOf: download.getResumeDataURL())
        } catch {}

        download.downloadState = downloadStatus.downloading

        if data != nil {
            download.downloadTask = self.defaultSession.downloadTask(withResumeData: data)
            download.downloadTask?.resume()
        } else {
            download.downloadTask = self.defaultSession.downloadTask(with: download.downloadURL)
            download.downloadTask?.resume()
        }

    }

此代码在 iOS 9 上完美运行,但在 iOS 10 上,当我终止我的应用程序并重新打开它时它不会恢复,但没有出现任何错误(提醒:它在 iOS 9),我很困惑有什么解释吗?

错误在iOS10,Apple 必须修复它。不过,根据这个 thread on Apple's forum,他们已经为 10.2 版本修复了它。

您也可以查看此 。他们提供了详细的解决方案。