ionic 4 iOS 应用程序在 iOS 13+ 上卡在启动画面

Posted

技术标签:

【中文标题】ionic 4 iOS 应用程序在 iOS 13+ 上卡在启动画面【英文标题】:ionic 4 iOS app stuck at splash screen on iOS 13+ 【发布时间】:2020-03-03 12:31:21 【问题描述】:

config.xml

<xml version='1.0' encoding='utf-8'?>
<widget id="com.leo9.gameofplan" version="0.0.4" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>Game Of Plan</name>
    <description>The Game of Plan app is designed to: Capture your Thoughts and Feelings and convert it into Tangible Action Plan.</description>
    <author email="info@leo9studio.com" href="https://leo9studio.com/">Le9studio Team</author>
    <content src="index.html" />
    <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:*" />
    <preference name="ScrollEnabled" value="false" />
    <preference name="WKWebViewOnly" value="true" />
    <preference name="CordovaWebViewEngine" value="CDVUIWebViewEngine" />
    <preference name="android-minSdkVersion" value="19" />
    <preference name="android-targetSdkVersion" value="28" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="AutoHideSplashScreen" value="false" />
    <preference name="SplashScreenDelay" value="10000" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="30000" />
    <preference name="OverrideUserAgent" value="Mozilla/5.0 Google" />
    <allow-navigation href="*" />
    <plugin name="cordova-plugin-whitelist" spec="^1.3.3" />
    <plugin name="cordova-plugin-statusbar" spec="^2.4.2" />
    <plugin name="cordova-plugin-splashscreen" spec="^5.0.2" />
    <plugin name="cordova-plugin-ionic-webview" spec="^4.0.0">
        <variable name="ANDROID_SUPPORT_ANNOTATIONS_VERSION" value="27.+" />
    </plugin>
    <plugin name="cordova-plugin-network-information" spec="~2.0.1" />
    <plugin name="cordova-plugin-secure-storage" spec="^3.0.2" />
    <plugin name="cordova-plugin-screen-orientation" spec="^3.0.2" />
</widget>

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8" />
  <title>Game of Plan</title>

  <base href="." />

  <meta name="viewport"
    content="viewport-fit=cover, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  <meta name="format-detection" content="telephone=no" />
  <meta http-equiv="Content-Security-Policy"
    content="font-src 'self' data:; img-src * data:; default-src gap://ready file://* *; script-src 'self' 'unsafe-inline' 'unsafe-eval' * ; style-src 'self' 'unsafe-inline' *">
  <meta name="msapplication-tap-highlight" content="no" />


  <link rel="icon" type="image/png" href="assets/icon/favicon.png" />

  <meta name="apple-mobile-web-app-capable" content="yes" />
  <meta name="apple-mobile-web-app-status-bar-style" content="black" />
</head>

<body>
  <app-root></app-root>
</body>

</html>

我在这里附上我的 config.xml 和 index.html 文件。

我的应用在 ios13+ 设备中卡在启动画面。由于这个原因,该应用被拒绝发布到应用商店。我尝试了很多方法来解决这个错误。降级无法使用的闪屏插件,还在config.xml中添加了一些与闪屏相关的配置行,也无法使用。

应该有什么解决办法?

【问题讨论】:

控制台中是否有任何错误输出? 无法在 Safari 中打开控制台。这是我第二次更新的原因应该是什么,第一次它工作正常。 @EinfachHans 在 xcode 中呢?那里有日志吗? 2020-03-03 23:46:31.207075+0530 Game Of Plan[1066:13222] Apache Cordova 本机平台版本 5.1.1 正在启动。 2020-03-03 23:46:31.208688+0530 计划游戏[1066:13222] 多任务 -> 设备:是,应用程序:是 2020-03-03 23:46:31.315418+0530 计划游戏[1066: 13222] [CDVTimer][inappbrowser] 0.312090ms 2020-03-03 23:46:31.315861+0530 Game Of Plan[1066:13222] CDVPlugin 类 CDVUIInAppBrowser(插件名称:uiinappbrowser)不存在。 @EinfachHans 看起来您正在使用带有 UI WebView 的 InAppBrowser。这不是一个好主意,因为 UIWebView 已被弃用。但是该类似乎不存在。你的插件安装对了吗?您使用的是哪个 cordova-ios 版本? 【参考方案1】:

你应该在你的&lt;platform name="ios"&gt;标签中添加以下代码:

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

取自这里:https://cordova.apache.org/howto/2020/03/18/wkwebviewonly.html

【讨论】:

【参考方案2】:

我从未使用过 Cordova 闪屏,但查看您的 config.xml 内容,我发现您有重复的 SplashScreenDelay 首选项,一个值为 30000,相当于 30 秒,另一个值为10000,这可能是问题背后的原因。 我将删除重复的首选项并将时间值设置为 5000(5 秒),我还将添加 AutoHideSplashScreen 首选项并将其设置为 false,然后在deviceready 事件处理程序中添加一个计时器:

function onDeviceReady() 
    setTimeout(function () 
        navigator.splashscreen.hide();
    , 5000);

应该在here中解释。检查this。 我希望这会有所帮助。

【讨论】:

以上是关于ionic 4 iOS 应用程序在 iOS 13+ 上卡在启动画面的主要内容,如果未能解决你的问题,请参考以下文章

Ionic不能在Safari和iOS 11上使用ServiceStack Client

从照片库中选择视频时,文件大小仅适用于 iOS 13.2 上 Ionic 中的视频

Ionic Capacitor Deploy App on ios 13.3 device freeze splashscreen

Ionic 4 IOS Socket.io 如何动态获取配置

Ionic 4 在 iOS 设备上运行应用程序时出现电容器错误

Ionic 4 ZBar 在 ios 中崩溃