问题描述
我正在研究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中,我们为WKWebView有了一个名为WKURLSchemeHandler的新API,可以简化我们的生活。
这意味着,如果您想自己处理一些请求,则只需定义自定义方案并将其设置为WKWebViewConfiguration。
我的自定义方案是app:// myapp,但我需要实现WKURLSchemeHandler并将其注册到WKWebViewConfiguration。
解决方法
您不需要实现SchemeHandler,它已经在cordova-ios中。只需将此方案放入您的config.xml中即可:
<platform name="ios">
<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />
....
</platform>
(而且您可能还需要设置iosExtraFilesystems和iosPersistentFileLocations首选项)
,然后在您的JS代码中从WkWebKit获取实际的网址,例如cordova.file.DataDirectory:
url = window.WkWebView.convertFilePath( cordova.file.dataDirectory ) + subPath;
window.open( url );