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代码?

4

1 回答 1

2

您不需要实现 SchemeHandler,它已经在 cordova-ios 中了。只需将此方案放在您的 config.xml 中:

<platform name="ios">
  <preference name="scheme" value="app" />
  <preference name="hostname" value="localhost" />
  ....
</platform>

(您可能还需要设置 iosExtraFilesystems 和 iosPersistentFileLocations 首选项)

并在您的 JS 代码中从 WkWebKit 获取实际 URL,例如 cordova.file.DataDirectory :

url = window.WkWebView.convertFilePath( cordova.file.dataDirectory ) + subPath;
window.open( url );
于 2020-09-01T07:37:29.767 回答