iOS 7上的Cordova 3.0白闪--我研究过这个

Posted

技术标签:

【中文标题】iOS 7上的Cordova 3.0白闪--我研究过这个【英文标题】:Cordova 3.0 white flash on iOS 7--I have researched this 【发布时间】:2013-10-23 20:27:40 【问题描述】:

我在 Cordova 3.0 for ios 7 中遇到闪屏问题。在我运行的终端中:

cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-splashscreen.git

我生成的config.xml 文件如下:

    <content src="./index.html" />
<feature name="LocalStorage">
    <param name="ios-package" value="CDVLocalStorage" />
</feature>
<access origin="*" />
<preference name="KeyboardDisplayRequiresUserAction" value="true" />
<preference name="SuppressesIncrementalRendering" value="false" />
<preference name="UIWebViewBounce" value="true" />
<preference name="TopActivityIndicator" value="gray" />
<preference name="EnableLocation" value="false" />
<preference name="EnableViewportScale" value="false" />
<preference name="AutoHideSplashScreen" value="true" />
<preference name="ShowSplashScreenSpinner" value="false" />
<preference name="FadeSplashScreen" value="true" />
<preference name="MediaPlaybackRequiresUserAction" value="false" />
<preference name="AllowInlineMediaPlayback" value="false" />
<preference name="OpenAllWhitelistURLsInWebView" value="false" />
<preference name="BackupWebStorage" value="cloud" />
<preference name="permissions" value="none" />
<preference name="orientation" value="default" />
<preference name="target-device" value="universal" />
<preference name="fullscreen" value="true" />
<preference name="webviewbounce" value="true" />
<preference name="prerendered-icon" value="true" />
<preference name="stay-in-webview" value="false" />
<preference name="ios-statusbarstyle" value="black-opaque" />
<preference name="detect-data-types" value="true" />
<preference name="exit-on-suspend" value="false" />
<preference name="disable-cursor" value="false" />
<preference name="android-minSdkVersion" value="7" />
<preference name="android-installLocation" value="auto" />
<feature name="SplashScreen">
    <param name="ios-package" value="CDVSplashScreen" />
</feature>
<feature name="SplashScreen">
    <param name="android-package" value="org.apache.cordova.SplashScreen" />
</feature>
<feature name="InAppBrowser">
    <param name="ios-package" value="CDVInAppBrowser" />
</feature>
<feature name="InAppBrowser">
    <param name="android-package" value="org.apache.cordova.InAppBrowser" />
</feature>

我在资产目录中有适当的启动图像。每当我尝试运行这个应用程序时,它总是在启动屏幕上运行良好,但很快就会变成白色。太让人抓狂了;我查看了很多链接并按照他们告诉我的做了,例如:

Phonegap 3 white flash after splash

我做错了什么?

更新:

哇,Phonegap。这是解决方案:

<feature name="SplashScreen">
<param name="ios-package" value="CDVSplashScreen"/>
<param name="onload" value="true" />
</feature>

【问题讨论】:

您的应用是在白屏后加载还是挂在那里? 它加载。不过,config.xml 可能有问题,也可能没有问题,因为如果我关闭自动隐藏启动画面,它就不起作用。 Config.xml 在我的平台/ios/www 文件夹中。 onload = true 设置是否解决了您的问题?如果有的话我很高兴:) 是的,确实如此。谢谢。 【参考方案1】:

这是一种正常的行为。启动画面会在您的应用(比如:index.html)加载之前隐藏。

您可以通过执行以下操作延迟 splashscreen.hide() 来避免白色闪烁:

编辑 config.xml 文件中的 AutoHideSplashScreen 设置。它必须是false。(这个文件应该在platforms/ios/www/)

<preference name="auto-hide-splash-screen" value="false" />

要延迟隐藏启动屏幕,请在 deviceready 处理程序中添加一个计时器,如下所示(我在 index.html 中添加了它):

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

这会将 SplashScreen 隐藏延迟 2 秒。 对我来说,它的工作时间为 1200 毫秒,您可以尝试一下。

查看 iOS 怪癖部分:http://docs.phonegap.com/en/3.0.0rc1/cordova_splashscreen_splashscreen.md.html#splashscreen.hide

【讨论】:

auto-hide-splash-screen 首选项已被弃用,因为PhoneGap Config XML 中未提及

以上是关于iOS 7上的Cordova 3.0白闪--我研究过这个的主要内容,如果未能解决你的问题,请参考以下文章

使用 Cordova 3.7 (file://) 从 iOS 8 上的 www 文件夹加载资产

iOS:从 cordova 2.2.0 升级到 2.3.0 时面临问题

InAppBrowser 没有在 ios6 上显示工具栏与 cordova 3.3.0

如何将第三方框架添加到 Cordova 3.0 自定义插件?

如何在 iOS 8 上的 Cordova / PhoneGap 应用程序中隐藏键盘表单附件栏? [复制]

如何在iOS 8上的Cordova / PhoneGap应用程序中隐藏键盘表格附件栏? [重复]