iOS, app stuck on splash screen with loading animation

I am launching my app on iOs simulator with:

$ionic emulate ios -lcs

but my app is stuck on the splash screen, with the loading animation in the middle.
There are no errors on the terminal.
I have Xcode 7.1. And the simulator seems to automatically launch iOS 9 (BTW I am wondering how to choose another version of iOS…).

Can you help me get one step further on the process of debugging my app for iOS ?

Thanks

Can someone help on this please ? (Sorry to up, it’s a bit urgent)

I’m still pretty new at Ionic but from my experience so far I would say there is an error in your code which is stopping it from proceeding past the splash screen.

First of all I’d test it in Safari using ionic serve to ensure there’s no errors there.

You can then use developer tools in Safari to debug the error within the Simulator. Sometimes this doesn’t work though if the error occurs before Safari detects the app in Simulator. If that’s the case the only way I’ve been able to fix it is strip back some of the code to iron our what code is causing the error.

Hi @bensinclair, thanks for answering.

Indeed, I developed the whole app using ionic serve on m linux machine, but now I am working on a mac to debug the app on iOS, and I didn’t even try it…

I just did now, and it opens chrome and there are no error, except some 404 for files, which are normal in my app.

I don’t really know how to use Safari to debug: I see, in the ‘Development’ menu of Safari, that there is a ‘simulator’ menu, but there’s no devices in it.

Do you think you can help me further ?

If you run app using xcode and your iphone is connected to your computer using a cable, then you can inspect it using safari Develop -> inspect -> iphone. But Generally you don’t need to do it, XCode would print any JS error in it’s window also

@bensinclair
I see my app in Safari’s Web Inspector, in menu “simulator”, but my app is grayed out, I can select it.

@yurinondual
Thanks but must the app be signed to do this ? If yes, I am not familiar with the process yet.

EDIT: I’ve just created a new ionic app :

$ionic start testApp sidemenu
$cd testApp
$ionic emulate ios -lcs

leads to the same issue : the default app loads infinitely…

EDIT the default ionic app, is running in the simulator, if I remove the options -lcs.
In the case of my app, if I remove -lcs, I can reach the point where ionic requires angular.min.js.map (which I can now see in Safari’s console). So I am copying it in www/lib/ionic. Then I launch it again and get a white screen in the emulator and no errors in safari Web Inspector console.
Argggh!!

This one’s getting as bit beyond me. All I can suggest is commenting out code so the app loads something (not blank white) and then uncomment it until it breaks again so you can identify which line isn’t working. Not a great solution but it worked for me when I had a similar problem.

I would love to do this, but livereload doesn’t work ! (I guess that’s how you meant I should do this)

All Livereload does is reload the browser window when you make a change. It has nothing to do with what I’ve suggested.

Ok i see, what I meant when mentioning livereload is that without this feature it’s going to be really painful to do this step by step procedure. But I can try.

Hi friends,

I experienced this issue too, since ionic added cordova splash screen plugin, all we need is to enable the following code in app.js inside .run() function for iOS ONLY.

navigator. splashscreen.hide()

For more info :https://github.com/apache/cordova-plugin-splashscreen/blob/master/README.md

Thanks

If I mentioned anything wrong, do correct me.

1 Like

@geshd91
I have this plugin installed indeed.
And I have this in my config.xml:

  <preference name="SplashScreen" value="screen"/>
  <preference name="AutoHideSplashScreen" value="false"/>
  <preference name="SplashScreenDelay" value="3000"/>

Shouldn’t the splahscreen hide itself even in iOS 9 with this ?

Or should I add this in the run.js:

if (ionic.Platform.isIOS()){
   setTimeout(function () {
      navigator.splashscreen.hide();
   }, 3000 - 1000);
}

Thanks

1 Like

Hi Louis, you may need the second bit of codes. In my case I thought if I had the last line on the config, it would hide the splasmscreen after 3000 ms. But it doesn’t, you have to tell it to hide in a set time period or u have to wait until the platform is ready.

Good luck

Thanks for your answer @KimB, it’s weird because on a iOS 9 device, everything works fine, but in the iOS 9 simulator the app is stuck on the splashscreen…

I am gonna try to add the bit of code with navigator.splashscreen.hide();.

Hi Louis, that’s strange. I tested it on iPhone 4, it didn’t work. For two days, it stucked on the splashscreen, so I thought it was something else. That’s interesting, hope someone can explain this behaviour eh.

Please update, in case it is something else.

Hi @KimB, I don’t if you are aware but I also have this strange issue : Android release only displays splash screen on the first launch

I have the same issue since i’m using cordova-ios 4.0.1.
Are there any possible solutions?

Was it working before? Any more details to how it started?

Finally, i solved the problem.
After i have re-installed the plugins cordova-plugin-push and ionic-plugin-keyboard my app launched as expected.

The xcode console didn’t show the issue with the plugins but in GapDebug i got two error messages pointing to that problem…

thx

1 Like

Hi PhysoX,

I have tried the GapDebug, but it did not show my App. And even my app shows, the network panel logs nothing when the app is stuck on splash screen. Can you please tell us how do you debug in the GapDebug?