【问题标题】:How to implement a native WKURLSchemeHandler in cordova-ios 6.1.0如何在 cordova-ios 6.1.0 中实现原生 WKURLSchemeHandler
【发布时间】:2020-08-18 15:13:36
【问题描述】:

我正在开发一个 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代码?

【问题讨论】:

    标签: ios cordova wkwebview wkwebviewconfiguration wkurlschemehandler


    【解决方案1】:

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

    【讨论】:

    • 这应该是公认的答案,我可以像常规接受一样使用我的代码,只需为图像 src 添加if(window.WkWebView &amp;&amp; window.WkWebView.convertFilePath) file = window.WkWebView.convertFilePath(file);。作品
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多