I understand where you all are coming from. Definitely being able to create an impression of a quality app is important.
Let me just summarize what we know and we’ve done so far.
First, we did have a serious regression issue in Graphics 2.0, causing a 2-3 second delay black screen issue. This regression existed in daily builds 2119 through 2154. It has been fixed starting in 2155.
(Thanks to Ingemar and Naomi for submitting bugs and providing reproducible test projects in cases 30332 and 30361!)
Second, there is another black screen that seems intermittent and seems to be project-specific.
It took awhile for us to identify a pattern. The pattern is around older (slower) devices like the initial retina iPhone4. In particular, having a lot of activity in the initial main.lua seems to make the delay much more apparent.
For this intermittent issue, I’ve done a deep dive with a colleague, and here’s what we have found:
-
This seems to be related to our use of GLKit. We used this built-in iOS library starting in Graphics 2.0, per Apple’s recommendation. It’s the preferred way in iOS for handling OpenGL-ES. Unfortunately, this library seems to have timing delays between application start and when GLKit renders on the initial screen.
-
Apple does not allow you to extend the lifetime of the launch image. The launch image disappears when iOS wants it to. As explained in Human Interface Guidelines, Apple states:
Supply a plain launch image that improves the user experience. In particular, the launch image isn’t an opportunity to provide:
An “app entry experience,” such as a splash screen
An About window
Branding elements, unless they are a static part of your app’s first screen
Because users are likely to switch among apps frequently, you should make every effort to cut launch time to a minimum, and you should design a launch image that downplays the experience rather than drawing attention to it.
Apple enforces this policy by deliberately NOT providing an official way in the iOS API to extend the time that a launch image appears.
Translating this to what this means to you as Corona developers, it is always good practice to minimize what happens in main.lua.
- We believe we have found a way to improve the intermittent black screen issue, at least we are no longer seeing the issue in the test cases we have. For those of you still experiencing issues, you can give this a shot in the next daily build (2221 or after).
Now, I do want to set expectations here. As you can see from above, we’re fighting an uphill battle against Apple’s stated policies, so keep in mind, there will be some issues where you may have to make changes to your code to minimize launch time, as Apple is pushing everyone to do.