微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS |网址会话 |下载任务|当用户在应用程序之间切换并来时, didWriteData 不调用

如何解决iOS |网址会话 |下载任务|当用户在应用程序之间切换并来时, didWriteData 不调用

在我的应用程序中,我需要下载一个文件(大小:50mb),还需要支持后台下载。通过以下代码,我甚至可以在后台进行下载。唯一的问题是当我尝试切换应用程序(比如我打开 WhatsApp)并返回我的应用程序而不进入 iPhone 的主屏幕时,UI 没有正确更新。

我调试了代码,发现没有调用didWriteData。

weak var downloadTask: URLSessionDownloadTask?
lazy var downloadSession: URLSession = {
        let configuration = URLSessionConfiguration.background(withIdentifier: "MYDOWNLOADIDENTIFIER")
        return URLSession(configuration: configuration,delegate: self,delegateQueue: OperationQueue.main)
    }()

下载按下的事件:

downloadTask = self.downloadSession.downloadTask(with: fileUrl)
 downloadTask?.resume()


func urlSession(_ session: URLSession,downloadTask: URLSessionDownloadTask,didWriteData bytesWritten: Int64,totalBytesWritten: Int64,totalBytesExpectedToWrite: Int64) {
    //UI update for progress level
    }

func urlSessionDidFinishEvents(forBackgroundURLSession session: URLSession) {
        logger.write("urlSessionDidFinishEvents\n")
        dispatchQueue.main.async {
            if let appDelegate = UIApplication.shared.delegate as? AppDelegate,let completionHandler = appDelegate.backgroundSessionCompletionHandler {
                appDelegate.backgroundSessionCompletionHandler = nil
                completionHandler()
            }
        }
    }

AppDelegate.swift

  func application(_ application: UIApplication,handleEventsForBackgroundURLSession identifier: String,completionHandler: @escaping () -> Void) {
        backgroundSessionCompletionHandler = completionHandler
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?