#ios #cordova #wkwebview #wkwebviewconfiguration #wkurlschemehandler
#iOS #кордова #wkwebview #конфигурация wkwebviewconfiguration #wkurlschemehandler
Вопрос:
Я работаю над проектом cordova ios (6.1.0), и я хочу реализовать собственный WKURLSchemeHandler для перехвата обработки пользовательской схемы для решения моих проблем с cors.
В деталях я хочу сделать что-то вроде:https://medium.com/@kumarreddy_b/custom-scheme-handling-in-uiwebview-wkwebview-bbeb2f3f6cc1
До iOS 11 у нас не было никаких системных API для перехвата событий из WKWebView.В iOS 11 мы получили новый API под названием WKURLSchemeHandler для WKWebView, чтобы упростить нашу жизнь.
Это означает, что если вы хотите обработать какой-либо запрос самостоятельно, то просто определите пользовательскую схему и установите для нее конфигурацию WKWebViewConfiguration.
Моей пользовательской схемой является app: //myapp, но мне нужно реализовать WKURLSchemeHandler и зарегистрировать его в WKWebViewConfiguration.
Есть ли какой-либо способ реализовать собственный код ios в cordova?
Ответ №1:
Вам не нужно внедрять SchemeHandler, он уже есть в cordova-ios. Просто поместите эту схему в свой config.xml:
<platform name="ios">
<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />
....
</platform>
(и вам, возможно, потребуется также установить префы iosExtraFilesystems и iosPersistentFileLocations)
и в вашем JS-коде получите фактический URL из WkWebKit, например, для cordova.file.DataDirectory :
url = window.WkWebView.convertFilePath( cordova.file.dataDirectory ) subPath;
window.open( url );
Комментарии:
1. Это должен быть принятый ответ, я мог бы использовать свой код как обычный accept с простым добавлением
if(window.WkWebView amp;amp; window.WkWebView.convertFilePath) file = window.WkWebView.convertFilePath(file);
для src изображения. Работает