我WKURLSchemeHandler
用来提供无法由WkWebView
. 虽然它适用于像视频这样的小文件,但当它必须提供像视频这样的大文件时,它会完全冻结应用程序。
现在,我正在一步读取完整文件,这不适合重要文件。
data = try Data(contentsOf: fileUrl)
我应该怎么做才能避免这种情况?有没有办法“流式传输”文件的内容?
我WKURLSchemeHandler
用来提供无法由WkWebView
. 虽然它适用于像视频这样的小文件,但当它必须提供像视频这样的大文件时,它会完全冻结应用程序。
现在,我正在一步读取完整文件,这不适合重要文件。
data = try Data(contentsOf: fileUrl)
我应该怎么做才能避免这种情况?有没有办法“流式传输”文件的内容?
didReceive(Data)
很特殊,可以用部分数据多次调用,因此可以进行分块读取/流式传输。从文档中看并不明显,但他们在他们的演示文稿中表示方案处理程序功能(见 32:30):https ://developer.apple.com/videos/play/wwdc2017/220/
此外,WKURLSchemeTask
的函数可以在后台线程上调用,无需在主线程上执行(并且可能会阻塞 UI)。