Это мой упрощенный код, который у меня есть на данный момент:
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
if whatever {
decisionHandler(.cancel)
guard let url = navigationResponse.response.url else { return }
if let fileData = try? Data(contentsOf: url) {
let activityVC = UIActivityViewController(activityItems: [fileData], applicationActivities: nil)
self.present(activityVC, animated: true, completion: nil)
}
} else {
decisionHandler(.allow)
}
}
Я делаю это, чтобы загрузить и поделиться PDF-файлами и т. Д. c.
Этот код работает, но проблема в том, что вложение загружается дважды, сначала веб-просмотром, а затем объектом Data (), что может привести к длительным задержкам. Есть ли способ получить объект Data () из WKNavigationResponse или, возможно, вывести sh данные из веб-просмотра или его кеша? Или, может быть, вызвать UIActivityController () с другими параметрами? Я думаю примерно так (они не работают):
UIActivityViewController(activityItems: [navigationResponse], applicationActivities: nil)
UIActivityViewController(activityItems: [navigationResponse.response], applicationActivities: nil)