[英]PhoneGap Build iOS app has blank white screen after splash screen
我正在使用PhoneGap Build 3.0,试图摆脱启动画面后出现的空白屏幕。
我做过研究,我所能找到的是对PhoneGap和Cordova的引用,而不是PhoneGap Build。 我尝试过的所有东西都没有用 - 主要是禁用自动启动画面隐藏,并使用JavaScript自动隐藏它:
在config.xml中:
<feature name="SplashScreen">
<param name="ios-package" value="CDVSplashScreen" />
<param name="onload" value="true" />
</feature>
在index.html中:
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
window.location.href = mysite.com
document.AddEventListener("deviceready", OnDeviceReady, false);
function OnDeviceReady() {
setTimeout(function() {
navigator.splashscreen.hide();
}, 6000);
};
</script>
但这似乎忽略了我并且无论如何自动隐藏屏幕。 我认为这是因为这个解决方案不适用于PhoneGap Build,但我不确定如何解决此问题。
完全感受到你的痛苦。 PhoneGap Build的文档需要大量工作。 我自己过去几天一直在和这个人打架。 经过多次试验和错误,这对我有用。
在config.xml中:
<!-- Do not auto hide splash on iOS -->
<preference name="AutoHideSplashScreen" value="false" />
<!-- Do not auto hide splash on Android -->
<preference name="SplashScreenDelay" value="10000"/>
<gap:plugin name="org.apache.cordova.splashscreen" />
Android似乎没有AutoHide参数,所以我们只是给它一个很长的延迟。 在达到这10秒之前,我们将使用JS手动隐藏它。
javascript代码navigator.splashscreen.hide();
需要在config.xml中添加插件引用navigator.splashscreen.hide();
上班。
另外,我发现我的项目(使用Kendo UI Mobile)在onDeviceReady
中不需要setTimeout延迟。 我猜,一旦你在config.xml中得到了正确的参数,你就会在你的应用中看到相同的参数。
我的onDeviceReady
看起来像这样:
document.addEventListener('deviceready', function() {
navigator.splashscreen.hide();
});
使用PhoneGap Build 3.1在iOS 6和Android 4.1上测试。
我想补充一点,我有一个类似的问题,在我的情况下,它不是闪屏。
在我使用PhoneGap build和Git的情况下,我在我的应用程序中添加了一个javascript文件,但未能包含并将新文件推送到我的git存储库。 这导致我的应用程序在本地工作,但当构建服务器提取最新代码时,它显示PhoneGap构建上的白色屏幕。
PhoneGap已初始化,但Kendo UI不喜欢缺少引用的js类并且失败了。 这是一个PhoneGap noob错误,但我想分享它只是帮助有类似问题的人和启动画面修复不起作用。 它可能是在您的移动ui框架加载之前发生的javascript错误。
如果您为应用程序使用白名单插件,则可能需要在config.xml中进行如下更改才能使用phonegap构建。
<gap:plugin name="cordova-plugin-whitelist" source="npm" version="~1" />
这是我的config.xml中的cli规范。
<preference name="phonegap-version" value="cli-5.2.0" />
尝试在configs和html上设置背景颜色。 示例蓝色:
<preference name="SplashMaintainAspectRatio" value="false" />
<preference name="SplashScreenDelay" value="1" />
<preference name="backgroundColor" value="0xff0000ff" />
并在html标签上
<html style="background-color:#0000ff;>
这是步骤
1)在config.xml中添加Splash屏幕首选项
<preference
name="SplashScreen"
value="screen" />
<preference
name="AutoHideSplashScreen"
value="true" />
<preference
name="SplashScreenDelay"
value="5000" />
<feature name="SplashScreen" >
<param
name="android-package"
value="org.apache.cordova.splashscreen.SplashScreen" />
<param
name="onload"
value="true" />
</feature>
2)在config.xml中声明你的启动画面
<!-- you can use any density that exists in the Android project -->
<splash
density="land-hdpi"
src="res/drawable-land-hdpi/splash.png" />
<splash
density="land-ldpi"
src="res/drawable-land-ldpi/splash.png" />
<splash
density="land-mdpi"
src="res/drawable-land-mdpi/splash.png" />
<splash
density="land-xhdpi"
src="res/drawable-land-xhdpi/splash.png" />
<splash
density="port-hdpi"
src="res/drawable-hdpi/splash.png" />
<splash
density="port-ldpi"
src="res/drawable-ldpi/splash.png" />
<splash
density="port-mdpi"
src="res/drawable-mdpi/splash.png" />
<splash
density="port-xhdpi"
src="res/drawable-xhdpi/splash.png" />
</platform>
3)最后将此类添加到org.apache.cordova.splashscreen包下的android项目结构中
要么
将它安装为Cordova插件。
我在iOS上只有类似的问题,在我的情况下,它与我在index.html上实现样式的方式有关。 在我的情况下,我必须为不同的品牌提供样式,它依赖于$ scope变量。 我在体内使用了@import ,显然iOS有问题。 我通过将CSS链接重新置于头部来解决它。 我使用$ rootScope和ng-if来根据品牌名称触发正确的样式。 不知怎的,它是@import,它在启动画面后产生了空白的白色屏幕...我希望它可以帮助任何有同样问题的人。
我有同样的问题“闪屏后空白屏幕”。 出于某种原因,我在模拟器iOS调试日志中收到此消息:
deviceready has not fired after 5 seconds
解决了从index.html中删除此元标记的问题
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
现在它在iOS中工作(没有在android中测试过)。 这里参考#1!
这也是cordova-plugin-splashscreen的文档。 (搜索“iOS Quirk:”)。 这里参考#2!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.