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】:你应该在你的<platform name="ios">
标签中添加以下代码:
<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 如何动态获取配置