繁体   English   中英

启动画面后,PhoneGap Build iOS应用程序有空白屏幕

[英]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链接重新置于头部来解决它。 我使用$ rootScopeng-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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM