apache / cordova-ios

Apache Cordova iOS
https://cordova.apache.org/
Apache License 2.0
2.16k stars 988 forks source link

The application shows a white screen forever. #957

Closed klochko7 closed 4 years ago

klochko7 commented 4 years ago

Problem

I'm using cordova ios@6.1.0, but the application shows a white screen forever when I build my Ionic 5 app. Could anyone suggest please, if exist way to fix it ?

What is expected to happen?

The application's screen keeps white.

Information from xcode

020-07-28 11:50:07.960630+0300 EzParts[5114:415617] ADAL version 2.3.1 2020-07-28 11:50:08.158368+0300 EzParts[5114:415617] Apache Cordova native platform version 6.1.0 is starting. 2020-07-28 11:50:08.158707+0300 EzParts[5114:415617] Multi-tasking -> Device: YES, App: YES 2020-07-28 11:50:08.241162+0300 EzParts[5114:415617] CDVWKWebViewEngine: trying to inject XHR polyfill 2020-07-28 11:50:08.246238+0300 EzParts[5114:415617] The preference key "KeyboardResize" is not defined and will default to "TRUE" 2020-07-28 11:50:08.246539+0300 EzParts[5114:415617] The preference key "AutoInjectCordova" is not defined and will default to "FALSE" 2020-07-28 11:50:08.246717+0300 EzParts[5114:415617] The preference key "AudioCanMix" is not defined and will default to "FALSE" 2020-07-28 11:50:08.375819+0300 EzParts[5114:415617] The preference key "WKSuspendInBackground" is not defined and will default to "TRUE" 2020-07-28 11:50:08.376166+0300 EzParts[5114:415617] The preference key "MediaPlaybackAllowsAirPlay" is not defined and will default to "TRUE" 2020-07-28 11:50:09.129646+0300 EzParts[5114:415617] WF: === Starting WebFilter logging for process EzParts 2020-07-28 11:50:09.129963+0300 EzParts[5114:415617] WF: _userSettingsForUser : (null) 2020-07-28 11:50:09.130467+0300 EzParts[5114:415617] WF: _WebFilterIsActive returning: NO 2020-07-28 11:50:09.188180+0300 EzParts[5114:415617] The preference key "KeyboardAppearanceDark" is not defined and will default to "FALSE" 2020-07-28 11:50:09.188642+0300 EzParts[5114:415617] The preference key "AllowLinkPreview" is not defined and will default to "FALSE" 2020-07-28 11:50:09.188934+0300 EzParts[5114:415617] The preference key "AllowBackForwardNavigationGestures" is not defined and will default to "FALSE" 2020-07-28 11:50:09.189114+0300 EzParts[5114:415617] CDVWKWebViewEngine will reload WKWebView if required on resume 2020-07-28 11:50:09.190014+0300 EzParts[5114:415617] Using Ionic WKWebView 2020-07-28 11:50:09.190808+0300 EzParts[5114:415617] [CDVTimer][console] 0.118017ms 2020-07-28 11:50:09.191149+0300 EzParts[5114:415617] [CDVTimer][handleopenurl] 0.131011ms 2020-07-28 11:50:09.194027+0300 EzParts[5114:415617] [CDVTimer][intentandnavigationfilter] 2.695918ms 2020-07-28 11:50:09.194393+0300 EzParts[5114:415617] [CDVTimer][gesturehandler] 0.123024ms 2020-07-28 11:50:09.267337+0300 EzParts[5114:415617] [CDVTimer][file] 72.758913ms 2020-07-28 11:50:09.275284+0300 EzParts[5114:415617] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x6000033af9c0> F8BB1C28-BAE8-11D6-9C31-00039315CD46 2020-07-28 11:50:09.293255+0300 EzParts[5114:415617] [CDVTimer][backgroundmode] 25.712967ms 2020-07-28 11:50:09.293514+0300 EzParts[5114:415617] [CDVTimer][backgroundmode] 0.010014ms 2020-07-28 11:50:09.294796+0300 EzParts[5114:415617] [CDVTimer][inappbrowser] 1.090050ms 2020-07-28 11:50:09.295679+0300 EzParts[5114:415617] The preference key "KeyboardResize" is not defined and will default to "TRUE" 2020-07-28 11:50:09.295876+0300 EzParts[5114:415617] CDVIonicKeyboard: resize mode 1 2020-07-28 11:50:09.296039+0300 EzParts[5114:415617] The preference key "HideKeyboardFormAccessoryBar" is not defined and will default to "TRUE" 2020-07-28 11:50:09.296910+0300 EzParts[5114:415617] The preference key "KeyboardAppearanceDark" is not defined and will default to "FALSE" 2020-07-28 11:50:09.297412+0300 EzParts[5114:415617] [CDVTimer][cdvionickeyboard] 2.382994ms 2020-07-28 11:50:09.297608+0300 EzParts[5114:415617] [CDVTimer][TotalPluginStartup] 107.020020ms 2020-07-28 11:50:16.451481+0300 EzParts[5114:415617] IAB.close() called but it was already closed. 2020-07-28 11:50:17.290529+0300 EzParts[5114:415617] Ionic Native: deviceready event fired after 284 ms

Version information

Ionic CLI : 6.10.1 (/usr/local/lib/node_modules/@ionic/cli) Ionic Framework : @ionic/angular 5.3.0 @angular-devkit/build-angular : 0.801.3 @angular-devkit/schematics : 8.1.3 @angular/cli : 8.1.3 @ionic/angular-toolkit : 2.2.0

Cordova:

Cordova CLI : 9.0.0 (cordova-lib@9.0.1) Cordova Platforms : ios 6.1.0 Cordova Plugins : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 5.0.0, (and 22 other plugins)

Utility:

cordova-res : not installed native-run : not installed

System:

ios-deploy : 1.9.2 ios-sim : 8.0.2 NodeJS : v12.15.0 (/usr/local/bin/node) npm : 6.14.7 OS : macOS Catalina Xcode : Xcode 11.6 Build version 11E708

Ionic plugin list:

com-sarriaroman-photoviewer 1.2.4 "PhotoViewer" cordova-clipboard 1.3.0 "Clipboard" cordova-plugin-advanced-http 2.4.0 "Advanced HTTP plugin" cordova-plugin-android-permissions 1.0.2 "Permissions" cordova-plugin-app-version 0.1.9 "AppVersion" cordova-plugin-background-mode 0.7.3 "BackgroundMode" cordova-plugin-badge 0.8.8 "Badge" cordova-plugin-compat 1.2.0 "Compat" cordova-plugin-device 2.0.2 "Device" cordova-plugin-file 6.0.2 "File" cordova-plugin-file-opener2 3.0.0 "File Opener2" cordova-plugin-inappbrowser 4.0.1-dev "InAppBrowser" cordova-plugin-ionic-keyboard 2.2.0 "cordova-plugin-ionic-keyboard" cordova-plugin-ionic-webview 5.0.0 "cordova-plugin-ionic-webview" cordova-plugin-local-notification 0.9.0-beta.2 "LocalNotification" cordova-plugin-ms-adal 0.10.1 "ADAL for Cordova" cordova-plugin-ms-adal-fork 0.10.4 "ADAL for Cordova" cordova-plugin-nativestorage 2.3.2 "NativeStorage" cordova-plugin-network-information 2.0.2 "Network Information" cordova-plugin-printer 0.8.0 "Printer" cordova-plugin-screen-orientation 3.0.2 "Screen Orientation" cordova-plugin-statusbar 2.4.2 "StatusBar" cordova-plugin-vibration 3.1.1 "Vibration" cordova-plugin-whitelist 1.3.3 "Whitelist" cordova-plugin-wkwebview-engine 1.2.1 "Cordova WKWebView Engine" cordova-plugin-zip 3.1.0 "cordova-plugin-zip" cordova-sqlite-storage 4.0.0 "Cordova sqlite storage plugin - cordova-sqlite-storage plugin version" cordova.plugins.diagnostic 5.0.2 "Diagnostic"

timbru31 commented 4 years ago

A white screen often indicates a JavaScript error. Can you gather the browser logs when starting the app?

PS: a) no need to use cordova-plugin-wkwebview-engine with cordova-ios@6.1.0 b) even more useless if you plan to use Ionic's webview engine.

breautek commented 4 years ago

Do note that safari web inspector doesn't show startup errors because the inspector needs to be opened to capture log events.

So you'll need to refresh the webview by pressing cmd + r while having the inspector focused.

klochko7 commented 4 years ago

breautek, good day. Could you explain please how I can refresh the webview by pressing cmd + r ? I am building on real device. Safari ->Develop ->Iphone ->no inspectable applications.

breautek commented 4 years ago

You should see your app as an inspectable application. You may need to use Safari Tech Preview, depending on what iOS version you are running.

klochko7 commented 4 years ago

breautek, I use macOs Catalina 10.15.5 and Safari 13.1.1

breautek commented 4 years ago

breautek, I use macOs Catalina 10.15.5 and Safari 13.1.1

Yup, safari 13.1.x shipped with ios 13.4. So that version of safari (which looks to be the latest available for mac) is probably not compatible with ios 13.5 or 13.6.

Try the safari tech preview I linked above. Apple frequently does stuff like this.

klochko7 commented 4 years ago

I installed safari tech preview, connect Iphone to mac with xcode.. build app to phone .. see splash screen and then white screen...

klochko7 commented 4 years ago

breautek, safari tech preview works, thanks.

jcesarmobile commented 4 years ago

cordova-ios 6 integrated the splash screen plugin into the platform, so if you were using ionic-native to hide the splash, it won't work because it relies in the plugin and the plugin is not installed on iOS.

Change this.splashScreen.hide(); to (navigator as any).splashscreen.hide(); in app.component.ts(or wherever you have this.splashScreen.hide();)