WKWebView: странное поведение при попытке открыть .docx, .pages и т. Д. - PullRequest
0 голосов
/ 03 сентября 2018

Я занимаюсь разработкой веб-приложения с использованием WKWebView. Проблема, с которой я сейчас сталкиваюсь, заключается в следующем:

Я использую webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void), чтобы определить, пытается ли пользователь получить доступ к вложенному файлу, такому как .pdf, .mov, .docx или .pages, и разрешить или отменить навигацию, используя decisionHandler.

Однако, когда я пытаюсь получить доступ к свойству navigationResponse response через

if let response = navigationResponse.response as? HTTPURLResponse

дополнительная проверка завершается неудачно для определенных типов файлов, таких как .docx, .pages, .rtf. Для других типов, таких как .mov, все работает как положено.

Проверка navigationResponse.response.url на наличие критических переходов к таким файлам, как .rtf Я обнаружил следующее:

x-apple-ql-id://BB110CD9-7330-4A39-82E4-6E550E9AC4EB/x-apple-ql-magic/ein%20text.rtf

До сих пор я обнаружил, что эта схема URL-адресов относится к среде Apple Quicklook, которая используется для отображения пользователю определенного содержимого файла в WKWebView. Однако эта схема используется только для внутреннего использования и не должна появляться там.

После того, как дополнительная проверка navigationResponse.response и приведение к HTTPURLResponse не удается, я пытаюсь отменить навигацию, вызывая decisionHandler(.cancel). В результате мой веб-просмотр показывает пустую страницу, и ни один из методов WKWebView s error functions, nor the didFinish` не вызывается.

Если я попытаюсь запланировать любой запрос после того, как это произошло через webView.load(someRequest)

webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error)

вызывается с error, являющимся Error Domain=WebKitErrorDomain Code=102 aka. "Загрузка кадра прервана".

Понятия не имею, что заставляет WKWebView показывать такое странное поведение.

ОС - iOS 11.4.

Кто-нибудь имеет представление о том, что может быть причиной, или кто-то может дать подсказку, где продолжить расследование?

Большое спасибо.

...