如何在cordova-ios 6.1.0

问题描述

我正在研究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。

有什么方法可以在cordova上实现本机ios代码吗?

解决方法

您不需要实现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 );