【问题标题】:cordova-plugin-crosswalk-webview on iOSiOS上的cordova-plugin-crosswalk-webview
【发布时间】:2023-03-27 13:53:01
【问题描述】:

我创建了一个 cordova 项目,添加了 2 个平台(android、ios)和一些插件。其中之一是最后一个 cordova-plugin-crosswalk-webview (1.3.1)。我选择了 iOS8 和 android 4.0 之类的目标 android。一切正常,我可以构建android平台和iOS。

在我的 config.xml 文件中,这一行是自动添加的:

...
<preference name="xwalkVersion" value="14+" />
<preference name="xwalkCommandLine" value="--disable-pull-to-refresh-effect" />
<preference name="xwalkMode" value="embedded" />
...

对于 android,我肯定会使用 crosswalk 插件。使用 Chrome 检查器,我可以看到 navigator.userAgent 设置为 Crosswalk,类似于 image

我的包 android-debug.apk 现在被拆分为 android-debug-armv7.apk 和 android-debug-x86.apk 并且 apk 大小接近 25Mb。

但对于 iOS,我无法理解人行横道是否正常工作。在我的 iOS 虚拟机的 safari 检查器中,navigator.userAgent 变量是:

"Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X)  AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12H141 (140222960683616)"

我如何确定我在 iOS 上运行的是什么浏览器?而且,如果 config.xml 配置不够,我如何设置 crosswalk-webview fos iOS?

我已经阅读了 iOS 的人行横道的 quick start guide,但我认为这对于通常使用 cordova CLI 的人来说不是那么容易理解。 cordova-plugin-crosswalk-webview npm package 的文档上没有任何内容。

更新:

按照科尔多瓦的输出:

$ cordova plugin list
cordova-plugin-crosswalk-webview 1.3.1 "Crosswalk WebView Engine"


$ cordova platforms add ios

Adding ios project...
iOS project created with cordova-ios@3.9.2
Running command: /Users/jedi/prj/appMobile/hooks/after_prepare/010_add_platform_class.js /Users/jedi/prj/appMobile
add to body class: platform-ios
Running command: /Users/jedi/prj/appMobile/hooks/after_prepare/030_resource_files.js /Users/jedi/prj/appMobile 
...
Installing "cordova-plugin-console" for ios
Installing "cordova-plugin-crosswalk-webview" for ios
Installing "cordova-plugin-device" for ios
..

【问题讨论】:

    标签: ios cordova webview crosswalk-runtime


    【解决方案1】:

    iOS 上的 crosswalk 使用原生 WKWebView,支持 indexedDB,你可以运行这段 javascript 代码来检查它是否是 WKWebView

    if (window.indexedDB) {
        alert('WKWebView');
    } else {
       alert('UIWebView');
    }
    

    【讨论】:

    • 您的回答中有些内容不正确,或者我理解不正确。我的应用程序使用 IndexDB 来存储数据,当我尝试使用 iOS6 时,该应用程序在没有 WKWebView 的情况下使用 IndexDB,所以.. 与 iOS8 有什么区别?
    • 不,你的应用程序不能使用 IndexedDB,也许是 WebSQL,IdexedDB 包含在 iOS 8 的 safari 中,它仅在 WKWebView 上可用,而不在 UIWebView 上可用 caniuse.com/#feat=indexeddb“Chrome 不支持适用于 iOS 或其他 iOS WebView。”
    • 如果你正确安装了人行横道,它应该使用 WKWebView。你也可以通过这个插件使用 WKWebView npmjs.com/package/cordova-plugin-wkwebview
    • 我已经用cordova plugin add cordova-plugin-crosswalk-webview 安装了人行横道。但对于 ios 来说,这还不够。 Here,我读到我有 3 种方法来使用它:扩展的 WKWebView、Crosswalk 扩展框架、Cordova 插件支持。但我不明白我必须选择什么。我尝试编译 crosswalk-ios 并将其像库一样添加到项目中,但现在 xcode 6.4 无法在与 GCDWebServer 链接时构建它。对我来说,这是第一次使用 cordova iOS 应用程序。我会试试cordova-plugin-wkwebview。
    • 如果我关闭 safari web 检查器,问题就会消失。完全疯了!
    【解决方案2】:

    cordova 人行横道插件只为 android 添加了人行横道。

    请注意,iOS 的 crosswalk 需要在应用商店中为应用程序使用 webkit,因此它本质上使用 WKWebView。 (它使用 webkit 而不是通常的闪烁引擎 chrome 是基于)

    查看 Jesse 对我的问题的回复:Cordova + Crosswalk iOS still using UIWebView

    【讨论】:

    • 看看更新,如果cordova crosswalk插件只为android添加cross walk,cordova平台输出是微不足道的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    相关资源
    最近更新 更多