Быстрое получение данных от WKNavigationResponse - PullRequest
0 голосов
/ 04 августа 2020

Это мой упрощенный код, который у меня есть на данный момент:

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)
...