I am currently developing Ionic2 app. I face a problem that after Splash screen, there is a white screen for 6-7 seconds, before app home screen.
I tried some googling but nothing works. My last attempt to solve is
hideSplashScreen() { if(Splashscreen){ setTimeout(() => { Splashscreen.hide(); },100) } };// <preference name="SplashMaintainAspectRatio" value="true"/> <preference name="FadeSplashScreenDuration" value="300"/>
Please help me in this issue;
EDIT:: My ionic info
is
Cordova CLI: 6.4.0 Ionic Framework Version: 2.0.0-rc.4 Ionic CLI Version: 2.1.17 Ionic App Lib Version: 2.1.7 Ionic App Scripts Version: 0.0.47 ios-deploy version: 1.8.6 OS: OS X El Capitan Node Version: v6.3.1 Xcode version: Xcode 7.2 Build version 7C68
On the right in the properties, there is the background attribute. Clicking on this and choosing custom will allow you to define the RGB value you'd like the colour of the white screen to now appear as. Running your app on Android and iOS will now no longer show the annoying white screen.
android.window.SplashScreenView. The view which allows an activity to customize its splash screen exit animation. Activities will receive this view as a parameter of SplashScreen.
It is important to check that the first activity which opens when the app is launched is MainActivity. java (The activity which we want to appear only once). For this, open the AndroidManifest. xml file and ensure that we have the intent-filter tag inside the activity tag that should appear just once.
By default, the splash screen is hidden after 3 seconds (see https://github.com/apache/cordova-plugin-splashscreen#configxml). But it could be that at this moment your app is not ready.
Therefore I add always the following preference to my config.xml:
<preference name="AutoHideSplashScreen" value="false"/>
Instead, I hide it manually, as soon as the app is ready:
this.platform.ready().then(() => { Splashscreen.hide(); });
This is working on iOS as well as on Android.
Updating Ionic project and change some preferences did the trick for me.
Here the changelog and infos.
1 - Update to the latest version of the Ionic CLI
, Cordova
and Typescript
:
npm uninstall -g ionic cordova typescript npm install -g ionic cordova typescript
2 - Update your package.json to match the following dependencies, remove existing node_modules directory, and then run npm install
:
"scripts": { "build": "ionic-app-scripts build", "clean": "ionic-app-scripts clean", "ionic:build": "ionic-app-scripts build", "ionic:serve": "ionic-app-scripts serve" }, "dependencies": { "@angular/common": "4.0.2", "@angular/compiler": "4.0.2", "@angular/compiler-cli": "4.0.2", "@angular/core": "4.0.2", "@angular/forms": "4.0.2", "@angular/http": "4.0.2", "@angular/platform-browser": "4.0.2", "@angular/platform-browser-dynamic": "4.0.2", "@ionic-native/core": "3.6.1", "@ionic-native/in-app-browser": "3.6.1", "@ionic-native/splash-screen": "3.6.1", "@ionic-native/status-bar": "3.6.1", "@ionic/storage": "2.0.1", "ionic-angular": "3.1.1", "ionicons": "3.0.0", "rxjs": "5.1.1", "sw-toolbox": "3.4.0", "zone.js": "0.8.9" }, "devDependencies": { "@ionic/app-scripts": "1.3.6", "typescript": "2.3.2" }
3 - Update your config.xlm with these preferences (live review is ok):
<preference name="loadUrlTimeoutValue" value="700000"/> <preference name="webviewbounce" value="false"/> <preference name="UIWebViewBounce" value="false"/> <preference name="DisallowOverscroll" value="true"/> <preference name="android-minSdkVersion" value="16"/> <preference name="BackupWebStorage" value="none"/> <preference name="StatusBarStyle" value="default"/> <preference name="SplashScreen" value="screen"/> <preference name="orientation" value="default"/> <preference name="SplashMaintainAspectRatio" value="true"/> <preference name="FadeSplashScreenDuration" value="300"/> <preference name="ShowSplashScreenSpinner" value="false"/> <preference name="AutoHideSplashScreen" value="false"/> <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine"/> <preference name="SplashScreenDelay" value="3000"/>
4 - Then I have copy/pasted some code that had been modified recently from here into my project (Ionic 2 demo and up to date app - Check the Github).
Now the application starts successfully without long splashscreen.
ps:
ionic run android -l
ionic run android --prod --release
this.platform.ready().then(() => { Splashscreen.hide(); });
EDIT: Update to Ionic v3.1.1 (2017-04-28)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With