应用程序进入后台后,URLSessionDownloadDelegate方法didWriteData不被调用

时间:2018-11-09 11:59:08

标签: swift background nsurlsession

在我的应用中,我想下载大文件。因此,我想向用户显示下载进度。为此,我实现了URLSessionDownloadDelegate

这很好,直到应用程序进入后台为止。然后用户重新打开应用程序时,不会调用didWriteData。但是,didFinishDownloadingTo仍被调用。因此,委托人本身不是问题。

其他一些开发人员在https://forums.developer.apple.com/message/229215#229215中报告了类似的问题。

但是,到目前为止,似乎没有解决此问题的方法或解决方法。这里有没有人找到任何解决方法? 如果没有,我可以用什么代替SessionDownloadTask

1 个答案:

答案 0 :(得分:3)

这似乎是iOS12中的错误。解决方法是,一旦应用程序再次激活,我将恢复所有下载任务。像这样:

private(set) var session: URLSession?

func applicationDidBecomeActive(_ application: UIApplication) {
    session?.getAllTasks(completionHandler: { tasks in
        for task in tasks {
            task.resume()
        }
    })
}