首页 > 解决方案 > 如何使用 WKURLSchemeHandler 提供大文件?

问题描述

WKURLSchemeHandler用来提供无法由WkWebView. 虽然它适用于像视频这样的小文件,但当它必须提供像视频这样的大文件时,它会完全冻结应用程序。

现在,我正在一步读取完整文件,这不适合重要文件。

data = try Data(contentsOf: fileUrl)

我应该怎么做才能避免这种情况?有没有办法“流式传输”文件的内容?

标签: swiftmacoscocoawkwebviewwkurlschemehandler

解决方案


didReceive(Data)很特殊,可以用部分数据多次调用,因此可以进行分块读取/流式传输。从文档中看并不明显,但他们在他们的演示文稿中表示方案处理程序功能(见 32:30):https ://developer.apple.com/videos/play/wwdc2017/220/

此外,WKURLSchemeTask的函数可以在后台线程上调用,无需在主线程上执行(并且可能会阻塞 UI)。


推荐阅读