【问题标题】:White blank screen issue with cordova ios with cordova-plugin-ionic-webview or cordova-plugin-wkwebview-engine plugins带有cordova-plugin-ionic-webview或cordova-plugin-wkwebview-engine插件的cordova ios出现白色空白屏幕问题
【发布时间】:2020-07-10 18:37:05
【问题描述】:

iOS 中的 UIWebview 会有问题。 Apple 将拒绝使用此功能的应用程序。所以我们决定将 WKWebview 用于我们的 cordova ios 应用程序。我安装了 cordova-plugin-wkwebview-engine 并在 config.xml 文件中添加了<preference name="WKWebViewOnly" value="true" />。 问题是在启动屏幕之后它显示白色的空白屏幕。

    <?xml version='1.0' encoding='utf-8'?>
<widget id="io.cordova.hellocordova" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>HelloCordova</name>
    <description>
        A sample Apache Cordova application that responds to the deviceready event.
    </description>
    <author email="dev@cordova.apache.org" href="http://cordova.io">
        Apache Cordova Team
    </author>
    <content src="index.html" />
    <plugin name="cordova-plugin-whitelist" spec="1" />
    <access origin="*" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
    <plugin name="cordova-plugin-ionic-webview" spec="^4.1.3" />
    <preference name="WKWebViewOnly" value="true" />
    <engine name="ios" spec="~5.1.1" />
    <plugin name="cordova-plugin-background-mode" spec="^0.7.3" />
    <plugin name="cordova-plugin-badge" spec="^0.8.8" />
    <plugin name="cordova-plugin-camera" spec="^4.1.0" />
    <plugin name="cordova-plugin-device" spec="^2.0.3" />
    <plugin name="cordova-plugin-geolocation" spec="^4.0.2" />
    <plugin name="cordova-plugin-splashscreen" spec="^5.0.3" />
    <plugin name="cordova-plugin-x-toast" spec="^2.7.2" />
</widget>

【问题讨论】:

  • 你解决了吗?我有同样的问题。
  • 如何解决这个问题?我已经添加了插件,但仍然是他们的问题。我怎样才能解决这个问题?我正在使用 PhoneGap。
  • 有什么消息吗?仍然有问题,我尝试了此页面中的所有内容

标签: ios cordova ionic3 wkwebview


【解决方案1】:

根据科尔多瓦文档: https://github.com/apache/cordova-plugin-wkwebview-engine/blob/master/README.md

正确的做法: https://ionicframework.com/blog/understanding-itms-90809-uiwebview-api-deprecation/?utm_campaign=enterprise&utm_source=hs_email&utm_medium=email&utm_content=85128961&_hsenc=p2ANqtz--vsf3kcg7MssMWwjv2_GpHmVbzN23_5fXDfKT0E6OileYraLWs9btGPqWUcq5mzTKCtKwXGqO35V3SnInjypj4uqSBRg&_hsmi=85128961

必须添加这些权限

<feature name="CDVWKWebViewEngine">
     <param name="ios-package" value="CDVWKWebViewEngine" /> 
</feature> 
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />

因此请检查它们是否已添加,如文档所述: “在 iOS 9 中,Apple 已通过 iOS 8 解决了您无法使用 file:// 加载语言环境文件的问题,必须求助于使用本地网络服务器。但是,您仍然无法从 file:// 使用 XHR在您的服务器上未启用 CORS 的协议。”

因此,如果您在版本 8 上进行测试,则存在问题,但我认为正如我所见,您的 config.xml 中的实现仍然不完整,因此请使用功能和首选项对其进行更新。

【讨论】:

  • 我在 config.xml 文件中添加了这些行。还是一样的白屏问题
  • 如果您在出现白屏时检查应用程序,可以吗?控制台中是否出现任何错误?
  • 你还有 cordova-plugin-ionic-webview ,安装新插件后应该删除
  • 我删除了它并安装了“cordova-plugin-wkwebview-engine”。然后准备ios并构建ios。相同的白屏结果。
【解决方案2】:

根据我的经验,它实际上不是白屏,而是带有白色背景的空白视图,cordova 应用程序无法正确呈现,如果滚动,您可以看到下面的所有 div 视图。

无论使用 UIWebview 还是 WKWebview,这似乎是新 iOS 13.4 版本上的 cordova 应用程序的问题。

【讨论】:

  • 我遇到了同样的问题。通过添加行 在 config.xml 中进行更改后,我已经构建了应用程序。构建后,应用程序只显示白屏。你能否建议如何解决这个问题。谢谢
  • 您找到解决此问题的方法了吗?升级到 WKWebView 的最后期限将在 12 月到来,升级也给我造成了这个问题。
  • 我切换到 ionic webview 插件并在 config.xml 中设置 wkwebview only 首选项
  • 如何解决这个问题?我已经添加了插件,但仍然是他们的问题。我怎样才能解决这个问题?我正在使用 PhoneGap。
  • 这里也是个问题。
【解决方案3】:

转到tsconfig.json 并确保compilerOptions 中的target 设置为es5。我尝试了所有,只有这个对我有用

【讨论】:

    【解决方案4】:

    同样的问题。我必须重新安装 ios 平台才能使其工作(至版本 5.1.1)

    【讨论】:

      【解决方案5】:

      记得添加这个插件:

      <plugin name="cordova-plugin-wkwebview-engine"  source="npm" /> 
      <plugin name="cordova-plugin-wkwebview-file-xhr"  source="npm" /> 
      

      并添加这个

      <preference name="WKWebViewOnly" value="true" />
      <feature name="CDVWKWebViewEngine">
          <param name="ios-package" value="CDVWKWebViewEngine" />
      </feature>
      <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
      <preference name="AllowBackForwardNavigationGestures" value="true" />
      <preference name="Allow3DTouchLinkPreview" value="false" />
      

      用cordova-ios@5.1.1编译


      使用 cordova-ios@6.1.0+ 构建它

      • 移除启动插件(现已集成)
      • 将inappbrowser插件升级到v4.0.0
      • 删除所有 wkwebview 相关插件
      • 将方案和主机添加到 config.xml:
          <preference name="scheme" value="app" />
          <preference name="hostname" value="localhost"  /> 
      

      【讨论】:

      • 如何解决这个问题?我已经添加了插件,但仍然是他们的问题。我怎样才能解决这个问题?我正在使用 PhoneGap。
      • 现在我已经迁移到 cordova-ios@6.1.0 编译没有问题,请记住在 v6.1.0 中你应该:删除启动插件,将 inappbrowser 插件升级到 v4.0.0,删除所有 wkwebview 相关插件,将方案和主机添加到 config.xml:。 IOS 的 PGB 不再维护 :(
      • 嗨@VeroO,我在更新之后仍然有这个问题,你能提供更多关于方案和主机的信息吗,它是cordova-ios@6.1.0的新东西吗?即使使用 Xcode,我们仍然需要 localhost?那么我们需要为应用商店版本设置什么?顺便说一句,我认为Android仍然需要splash插件,有一个新版本5.0.4可以绕过iOS。
      • 嗨@HuyVu,对于Android,您仍然可以使用PGB,但对于ios 没有。看看我创建的这个备忘单:medium.com/@vosorio/…
      猜你喜欢
      • 2022-12-14
      • 2020-08-24
      • 2019-09-10
      • 2017-02-02
      • 1970-01-01
      • 2018-06-18
      • 2019-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多