首页 > 解决方案 > 从 blob url 下载 WKWebview 文件

问题描述

对于 iOS 项目,我需要从给我一个 blob URL 的 web 视图下载一个文件。我已经通过在 webview 中注入 JavaScript 并使用WKScriptMessageHandler捕获数据来处理 iOS 14.5 版本的这种情况。对于 iOS 14.5+ 版本,我正在使用新的WKDownloadDelegate,因为苹果似乎正在阻止通过 JavaScript 注入下载任何文件。在 Xcode 12.5 下一切都运行良好,但令人惊讶的是它没有在 Xcode 13 下构建。

我已经看到 WKDownloadDelegate 方法在 Xcode 12.5 下具有@available(iOS 14.5, *)但这些相同的方法在 Xcode 13 下具有@available(iOS 15.0, *) :

Xcode 12.5:

@available(iOS 14.5, *)
func download(_ download: WKDownload, decideDestinationUsing response: URLResponse, suggestedFilename: String, completionHandler: @escaping (URL?) -> Void) 

@available(iOS 14.5, *)
optional func downloadDidFinish(_ download: WKDownload)

Xcode 13:

@available(iOS 15.0, *)
func download(_ download: WKDownload, decideDestinationUsing response: URLResponse, suggestedFilename: String, completionHandler: @escaping (URL?) -> Void)

@available(iOS 15.0, *)
optional func downloadDidFinish(_ download: WKDownload)

正如我上面提到的,一切都在 Xcode 12.5 上运行。但出于持续集成的目的,我需要它在 Xcode 13 下工作。

所以我的问题是:知道Apple正在阻止从iOS 14.5+版本的javascript注入下载任何数据,并且WKDownloadDelegate仅在iOS 15+版本的Xcode 13下工作,是否有任何解决方案可以从iOS的webview下载文件Xcode 13 下 14.5 和 15.0 之间的版本?

标签: iosswiftxcodewkwebview

解决方案


推荐阅读