Blank screen in iOS app

Hey folks,

I have an issue with the iOS version of my app. After the splash screen I only get a blank screen. The app is connecting to the server as I can see in the logs. A popup asking for location permission is also shown. One thing I realised is that the body height is 0. This behaviour is the same on simulator and device, local and remote server.

In Android and all browsers the app is working fine though.

Any help is appreciated. Thanks in advance

These are some log outputs in Xcode:

2015-09-26 11:48:02.479 App[316:171227] DiskCookieStorage changing policy from 2 to 0, cookie file: file:///private/var/mobile/Containers/Data/Application/F354C1F3-50F8-4949-B65E-865955DFEC24/Library/Cookies/Cookies.binarycookies
2015-09-26 11:48:02.991 App[316:171227] Apache Cordova native platform version 3.9.1 is starting.
2015-09-26 11:48:02.994 App[316:171227] Multi-tasking -> Device: YES, App: YES
2015-09-26 11:48:03.011 App[316:171227] Unlimited access to network resources
2015-09-26 11:48:03.020 App[316:171227]

Started backup to iCloud! Please be careful.
Your application might be rejected by Apple if you store too much data.
For more information please read “iOS Data Storage Guidelines” at:
https://developer.apple.com/icloud/documentation/data-storage/
To disable web storage backup to iCloud, set the BackupWebStorage preference to “local” in the Cordova config.xml file

2015-09-26 11:48:03.700 App[316:171227] [CDVTimer][statusbar] 432.528973ms
2015-09-26 11:48:03.726 App[316:171227] [CDVTimer][splashscreen] 24.990022ms
2015-09-26 11:48:03.845 App[316:171227] [CDVTimer][file] 118.269980ms
2015-09-26 11:48:03.845 App[316:171227] [CDVTimer][TotalPluginStartup] 577.910006ms
2015-09-26 11:48:04.709 App[316:171227] Resetting plugins due to page load.
2015-09-26 11:48:04.816 App[316:171227] Finished load of: file:///private/var/mobile/Containers/Bundle/Application/C94968FB-9F9D-4F3C-9FA1-8E749D66BCDD/app.app/www/index.html
2015-09-26 11:48:05.028 App[316:171227] METEOR CORDOVA DEBUG (meteor_cordova_loader.js) Error reading version file Error: Failed to resolve entry: file:///var/mobile/Containers/Data/Application/F354C1F3-50F8-4949-B65E-865955DFEC24/Library/NoCloud/meteor/version
2015-09-26 11:48:05.028 App[316:171227] METEOR CORDOVA DEBUG (meteor_cordova_loader.js) Couldn’t load from the manifest, falling back to the bundled assets.
2015-09-26 11:48:05.032 App[316:171227] start serving (
"/private/var/mobile/Containers/Bundle/Application/C94968FB-9F9D-4F3C-9FA1-8E749D66BCDD/App.app/www/application/",
"/private/var/mobile/Containers/Bundle/Application/C94968FB-9F9D-4F3C-9FA1-8E749D66BCDD/App.app/www/"
)
2015-09-26 11:48:05.034 App[316:171227] METEOR CORDOVA DEBUG (meteor_cordova_loader.js) Loading from url: http://meteor.local
2015-09-26 11:48:05.045 App[316:171227] Resetting plugins due to page load.
2015-09-26 11:48:05.057 App[316:171360] METEOR CORDOVA DEBUG loading filepath: /var/mobile/Containers/Bundle/Application/C94968FB-9F9D-4F3C-9FA1-8E749D66BCDD/App.app/www/application/index.html for path: %2F

… and so on …

2015-09-26 11:48:06.361 App[316:171227] Finished load of: http://meteor.local/

2015-09-26 11:48:07.384 App[316:171227] body height 0
2015-09-26 11:48:07.385 App[316:171227] screen height 548

2015-09-26 11:48:07.394 App[316:171360] METEOR CORDOVA DEBUG loading filepath: /var/mobile/Containers/Bundle/Application/C94968FB-9F9D-4F3C-9FA1-8E749D66BCDD/App.app/www/application/packages/twbs_bootstrap/dist/fonts/glyphicons-halflings-regular.woff for path: %2Fpackages%2Ftwbs_bootstrap%2Fdist%2Ffonts%2Fglyphicons-halflings-regular.woff
2015-09-26 11:48:07.630 App[316:171227] METEOR CORDOVA DEBUG (autoupdate_cordova.js) start downloading /packages/underscore.js
2015-09-26 11:48:07.630 App[316:171227] METEOR CORDOVA DEBUG (autoupdate_cordova.js) done downloading /packages/underscore.js
2015-09-26 11:48:08.033 App[316:171316] File Transfer Finished with response code 200

… and so on …

I can’t tell from the logs what went wrong. But having blank screen (broken apps) is quite common with Meteor Cordova. This typically happens when a hot code push takes place but fails. In this case, the only solution I know is to uninstall and re-install the entire app. This is really a PITA, especially when developing.

However, I am not sure if this is the case in your scenario. Typically, when this happened, the Meteor startup messages stop much earlier.

Try to connect to your iPad’s Cordova session using the safari inspector from your Mac. You can then press Cmd-R (in the inspector window) to refresh the iPad’s web view. You will then see the JavaScript error if there is one.

My guess is that you’re using an older version of the grigio:babel package which has the bug with SYMBOL_ITERATOR in iOS 9. Try upgrading that package, or upgrading to meteor 1.2 and removing that package entirely.

Thanks for your help guys.

@waldgeist hot code push means that I changed some code after building the app and that is loaded into the device, right? There should not be any code changes, so I think, that there is no hot code push occuring. But I’lll have a look.

@ephemer the hint with the inspector is nice. I will try that. I actually already upgraded my app to 1.2 and my device is still running in iOS 8. But lets see what the inspector says

Yes, that’s correct. This hot code push / reload mechanism is quite buggy at the moment. But MDG is working on that.