【问题标题】:State of WKWebView on Cordova iOS 9?Cordova iOS 9 上的 WKWebView 状态?
【发布时间】:2015-12-01 01:39:38
【问题描述】:

iOS 8 引入了 WKWebView,这是一种用于 iOS 的现代化 Web 视图,具有更多功能,尤其是针对 Javascript 代码的 JIT 编译,可显着提高性能。

然而,iOS 8 上的 WKWebView 存在一些错误,导致 Cordova 在默认情况下无法使用它。 AFAIK 有可以使用它的插件,但它们都说“测试版”、“不完整”等。据我所知,iOS 9 修复了阻止 Cordova 在 iOS 8 中默认为 WKWebView 的错误。

那么 iOS 9 上 Cordova 中 WKWebView 的状态是什么?我似乎找不到任何有关此的信息。 Cordova 在 iOS 9 上是否默认使用 WKWebView?如果不是,为什么不呢,是否可以通过其他方式正式启用?

【问题讨论】:

    标签: ios html cordova hybrid-mobile-app wkwebview


    【解决方案1】:

    新版本:2019 年 6 月

    Apple 并未在 iOS 13 测试版中移除 UIWebView,因此看起来它至少还能再使用一年。

    Ionic WebView 插件,从版本 3.0.0 开始不再使用网络服务器,而是使用 WKURLSchemeHandler,它需要放弃对 iOS 10 及更早版本的支持。

    仍然将大多数修复向后移植到 2.x 分支,这些分支仍然为那些想要支持 iOS 10 的用户提供 Web 服务器。

    WKWebView 没有集成到 cordova-ios 5.0.0 中,仍然需要插件才能使用它。应该有 6.0.0 版本。

    现在有可用的 Ionic Capacitor,这是一个 Apache Cordova 替代品,从一开始就使用 WKWebView 构建。它有自己的插件集,但也与大多数 Cordova 插件兼容。 https://capacitor.ionicframework.com/

    旧版本:2018 年 8 月

    Apple 已在 iOS 12 中弃用 UIWebView,并且可能会在 iOS 13 中将其删除。

    Apache Cordova has announced 它将在下一个主要版本 (5.x.x) 中将 cordova-plugin-wkwebview-engine 集成到 cordova-ios,但 UIWebView 仍然可以工作并成为默认版本。此外,您将能够在运行时在它们之间切换以轻松测试您的应用程序。 在未来的版本中,它将删除整个 UIWebView 代码,而 WKWebView 将是唯一的选择。

    但是cordova-plugin-wkwebview-engine 还是有很多问题。我仍然建议使用cordova-plugin-ionic-webview,因为使用GCDWebServer 可以解决大部分WKWebView 问题。

    新版本:2017 年 11 月

    Ionic 团队推出了 new WKWebView plugin,它不再是 Cordova 的一个分支,而是在内部使用 GCDWebServer,并克服了大多数 Cordova 插件的已知问题。

    新版本:2016 年 8 月 24 日

    更新只是添加了由 ionic 框架团队创建的 apache 的 WKWebView 插件的一个分支,该插件为插件添加了一些增强功能。

    https://github.com/driftyco/cordova-plugin-wkwebview-engine

    这些增强功能可能很快就会出现在核心插件上,但您现在可以查看并测试 ionic fork。

    新版本:2015 年 12 月 9 日

    cordova ios 4.0.0 has been releasedthe version 1.0.0cordova-plugin-wkwebview-engine

    尝试一下:

    cordova create wkwvtest my.project.id wkwvtest
    cd wkwvtest
    cordova platform add ios@4
    cordova plugin add cordova-plugin-wkwebview-engine
    

    正如我已经说过的,cordova-plugin-wkwebview-engine 只支持 iOS 9,在 iOS 8 上它将使用 UIWebView 并且有一些 know issues

    如果你也想支持 iOS 8,可以使用 Telerik 的 wkwebview-engine-localhost(实验性)或 cordova-plugin-wkwebview,它们都使用本地 Web 服务器

    https://github.com/apache/cordova-plugins/tree/master/wkwebview-engine-localhost

    旧消息:

    您可以通过可用的 WKWebView 插件将 WKWebView 与 cordova 一起使用。

    您提到的问题是 WKWebView 无法加载本地文件,因此插件使用本地 Web 服务器来解决问题。

    其中一些来自telerik https://github.com/Telerik-Verified-Plugins/WKWebView(内置Web服务器)或来自cordova团队的官方https://github.com/apache/cordova-plugins/tree/master/wkwebview-engine-localhost(使用Web服务器作为依赖插件)

    由于你提到的bug在iOS 9上已经修复,所以现在的cordova插件(兼容iOS 8和iOS 9,使用web服务器)已经重命名为wkwebview-engine-localhost,现在的名字cordova-plugin- wkwebview-engine 将用于仅支持 iOS 9 且不会使用 Web 服务器的新插件

    您可以在此处查看问题以跟踪进度

    https://issues.apache.org/jira/browse/CB-9566

    https://issues.apache.org/jira/browse/CB-9567

    编辑:我带来新闻https://shazronatadobe.wordpress.com/2015/09/09/apache-cordova-ios-4-0-0-and-wkwebview-support/

    WKWebView 支持

    cordova-plugin-wkwebview-engine 插件将仅适用于 iOS 9,它 将是一个核心插件。这个更新插件的开发还在 进行中。 Apple 修复了我们无法加载文档的错误 来自 file:// urls,它仅适用于 iOS 9。在非 iOS 9 设备上, cordova-ios 将回退到使用 UIWebView。

    此插件的旧版本使用本地网络服务器加载您的 主要文件。这个旧插件可以在你想用的地方使用 WKWebView 在 iOS 8 和 iOS 9 部署中,但是插件会 仍然作为科尔多瓦实验室的实验。这个插件有一些重构 要做的工作。

    【讨论】:

    • 我看到您提到的两张 jira 票证都已解决。修复发布了吗?
    • 还没有,cordova 4.0 和 wkwebview 插件也准备好了,但是它们正在发布投票过程中,我会在它们发布后立即更新。
    • 使用 cordova-plugin-wkwebview-engine 构建。如何检查cordova是否真的使用WKWebkit? userAgen 字符串是什么样的?
    • WKWebView 有 indexedDB 支持,所以你可以这样做:if (window.indexedDB) { //WKWebView }
    • UIWebView 还添加了 indexedDB,因此检查 WKWebView 是否为 if (window.webkit) {//WKWebView} 的最佳方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2015-12-16
    • 2015-06-04
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多