Default Splash Screen (no more single codebase for multiple platforms)

Engineering is looking into adding a way to control splash screens by platform. You could turn off our splash screen on iOS for instance and just have Android use images. I don’t have an ETA but

Rob

Hi Rob, Perry and Brent,

Considering that we paid $99 for this without complaining, wouldn’t it be best for Corona to make this a high-priority? Corona’s implementation has broken our ability to compile all platforms from a single code-base.

Kindly always.

Engineering is working on this. I can’t promise an ETA but it should be sooner than later.

Rob

What would be even more useful and awesome is if for iOS, the splash screen replaces the launch image. Currently to create a launch image for iOS is a headache having to go through xCode to create nibs.

That is what we wanted to do but, unfortunately, there are some bugs with how iOS caches launch screens that make them persist between builds in a way that isn’t supportable (bugs that annoyingly don’t affect apps installed with the App Store just ones installed by developers).

We are working on per-platform splash screen settings but, as is sometimes the case, the changes needed to make this happen are quite a bit more complex that one might think.

The documentation on this needs a bit of help. For example:

“You may need to experiment to arrive at the ideal image for your splash screen, but if it’s large enough for the largest device your app is intended to run on, you only need one image.”

There is no image size I can find that looks ok on an iPhone 6/7+ and on an iPad. We finally went to:

splashScreen = { enable = false, }, UILaunchImages = { { -- iPhone 4 Portrait ["UILaunchImageMinimumOSVersion"] = "7.0", ["UILaunchImageName"] = "Default", ["UILaunchImageOrientation"] = "Portrait", ["UILaunchImageSize"] = "{320, 480}" }, etc...

2 side notes here that I’ve heard from other developers and my team and I agree:

  1. There wasn’t nearly enough warning on this, and

  2. The documentation and implementation (especially for Enterprise users) was lacking.

We totally understand you’ve got to make money and we’re happy to pay for a great product. Felt like this was a bit rushed and ended up frustrating your paying user base.

We’ve gone to the trouble of displaying the same launch images that iOS uses, so that we have a near seemless transition for the iOS launch images to our first screen - which is essentially our logo with a “better with Internet and headphones” type of message, and an appropriate copyright at the bottom.

This is already working for us. But we just need to change build.settings every time, particularly if we want to create iOS and Android at the same time. For clarity, this forum thread is specific to the fact that one cannot do this kind of launch image support as we are doing without having to create a separate build for each platform. Of course, you Enterprise guys already have to do this anyway, right?

In Daily Build 2965 we added support for multi-platform splash screen control. Please see:

https://docs.coronalabs.com/daily/plugin/CoronaSplashControl/index.html

Note this is a “daily” build documentation. 

Rob

Thank you @Rob and the Corona Team!

Right now, I’m doing a happy dance.  :D 

@Rob Miracle,

After implementing these instructions, iOS and Google works correctly with regards to getting my own customized splash screen. Unfortunately, when I build a release for Amazon and noticed that I get the Corona splash screen. Can Corona please look into this?

Thank you.

Can you post what you have in your build.settings please?

Thanks

Rob

splashScreen = { ios = { enable = false }, android = { enable = true, image = "Default-Landscape@2x.png" } },

I’ll see what I can find. Can you confirm that when you say “build a release for Amazon” that you’re picking Amazon from the list of target stores on the build dialog?

Thanks

Rob

That’s correct.

Also, I’m using Corona version 2970.

Hmm, that’s definitely a bug.  You can workaround it for the moment by making the default splashscreen be what you want and then turning it off for iOS:

splashScreen =  {     enable = true,     image = "Default-Landscape@2x.png",          ios = {         enable = false     }, },

Just seeing this thread - since when are Apple launch screens not required?   This says they are.

https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen/

For iOS the flow goes:   UILaunchImage -> Corona Splash Screen -> Your first screen.

For Android it goes:   Corona Splash Screen -> Your first screen.

Apple still requires either static launch images (Default-568h@2x.png to get out of iPhone 4 mode, Default-667h@2x and Default-734h@3x.png) to get out of iPhone 5 compatibility mode with the new phones.  Or you can use a Storyboard based launch screen.

You have to have one of those to pass Apples automated tests. See: https://docs.coronalabs.com/guide/distribution/launchFile/index.html

If you’re using 3037 or later, we recommend using the Storyboard system. That’s the daily build where we dropped iOS 6 and 7 support. If you’re using older versions and you want to support the older OS’s, you should continue to use the Static method since Storyboards were introduced in iOS 8

Rob

Coming back to this as it seems the right place to post it and can’t find the info anywhere else…

Is there a way to ensure my splash screen (which is on a white background) displays on both iPad and iPhone without a load of black either down each side or along the top / bottom?

If I make the size right for iPad it displays incorrectly on iPhone and vice versa.

The documentation just says “experiment”, which I did, but can’t find a way of getting different images to work for both.

Thanks.

As of right now, we only support a black background but we are looking to expand the feature set some point in the future.

Rob

Just seeing this thread - since when are Apple launch screens not required?   This says they are.

https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen/