为什么URLSession无法在iOS 10上恢复?

时间:2016-11-05 15:44:20

标签: ios swift swift3 nsurlsession

在我的iOS下载管理器中

RCDownload是一个对象,包含下载的标题,网址,下载状态和恢复数据位置

我有一个名为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上完美运行),我很困惑有没有任何解释?

1 个答案:

答案 0 :(得分:2)

该错误发生在iOS 10中,Apple必须修复它。根据这个thread on Apple's forum,他们已经修复了10.2版本。

您还可以查看此Stackoverflow's post。他们为解决方案提供了详细信息。