ERROR ITMS-90096: "Your binary is not optimized for iPhone 5" - Never seen this msg before

Ideally, do what Rob said and follow the instructions in the link he provided or add  Default-568h@2x.png  to your build.

I thought I did answer the questions.

  1. No, Android does not use UILaunchImages, Default.png’s or anything else. The only reason a Default.png was used in the past was because we had Corona build it in. This is replaced by the Splash screen control now.

1a. Storyboard in this context is an Xcode thing and is 100% unrelated to our old storyboard.* API’s.

  1. For Android, there is no standard file name that will be loaded because Android doesn’t use them. If you’re using a build of Corona that pre-dates the splash screen, then Android will pick up a Default.png and Default@2x.png for you, but that’s Corona doing it, not the operating system. Post splash screen, if you want a splash screen on Android, you use the splash screen control plugin. 

  2. Apple manages the launch image from the operating system. Corona has no control over this and cannot affect it in any way.  Storyboard launch images use a UIImageView and will stretch the image to fit the box when you add it in Xcode’s Storyboard. You should provide three images:  1x, 2x, an 3x. We recommend using a 512x512, 1024x1024 and 1536x1536 sized images, but Apple doesn’t care. By keeping it square and have it work on the background color you set in Xcode’s storyboard, it will work for both landscape and portrait apps. 

Rob

With regard to Xcode’s storyboard I use a 1x1, 2x2 and 3x3 black png and use the splash screen plug in to display my logo.  

This way there is no difference between Android and iOS when my app loads and keeps things simple and memory efficient.

We were pondering do that for our sample apps, but what we opted to do there was just make the storyboard background black and leave out the UIImageView so we don’t even need the three small images. It’s a bit cleaner.

Rob

@Rob, thank you. Can you point me to a sample, so that I can see precisely how to properly define and name the 3 filenames? I realize this is an item that once figured out, it’s smooth sailing thereafter. But I would appreciate any further help.

In the guide I linked to above, it gives you a path to find a blank LaunchScreen.storyboardc file that you can copy to your project. It needs no images at all. Just copy it into place, add the one line to build.settings and take out the UILaunchImage table. You probably want to remove all of your Default*.png files.

Now if you do want to show something with the Storyboard launch image setup, follow this tutorial to build a custom one:
 

https://docs.coronalabs.com/guide/distribution/launchFile/index.html

At that point you are deciding the names you want to use. I believe if you just download the project, and export the LaunchScreen.storyboardc file without making any changes, then it will look for Launch.png, Launch@2x.png and Launch3x.png.

Rob

@Rob,
I cannot easily make this change, because my Splash image (which I’m already using) is the same as my Launch Images with more details on it. I’m actually already using the Splash screen plugin, but the issue isn’t that - its that the Application Loader prevents me from uploading my IPA file when it worked fine previously. The issue is related to an iPhone 5 image as stated in the error message:

ERROR ITMS-90096: "Your binary is not optimized for iPhone 5 - New iPhone apps and app updates submitted must support the 4-inch display on iPhone 5 and must include a launch image referenced in the Info.plist under UILaunchImages with a UILaunchImageSize value set to {320, 568}. Launch images must be PNG files and located at the top-level of your bundle, or provided within each .lproj folder if you localize your launch images. Learn more about iPhone 5 support and app launch images by reviewing the 'iOS Human Interface Guidelines' at https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen."

So, I need to understand how to solve this problem exactly as explained at the top of this thread.

I have already added a Default-Landscape-568h@3x.png file. But in so doing, do I need to modify the iPhone launch images settings in my build.settings file, to change it from what it is now (as below)?

 { -- iPhone 5 LandscapeLeft ["UILaunchImageMinimumOSVersion"] = "7.0", ["UILaunchImageName"] = "Default-Landscape-568h", ["UILaunchImageOrientation"] = "LandscapeLeft", ["UILaunchImageSize"] = "{320, 568, }" }, { -- iPhone 5 LandscapeRight ["UILaunchImageMinimumOSVersion"] = "7.0", ["UILaunchImageName"] = "Default-Landscape-568h", ["UILaunchImageOrientation"] = "LandscapeRight", ["UILaunchImageSize"] = "{320, 568}"

@Rob,
By the way, looking at the Static Method section of this Corona doc, seems to need to be updated if there is a 3rd image now required:

https://docs.coronalabs.com/guide/distribution/launchFile/index.html

@Rob, I got the LaunchScreen.storyboardc to work, but there are two things you should consider making more clear in the online document at https://docs.coronalabs.com/guide/distribution/buildSettings/index.html#launchimage

  1. It might be worth mentioning that the sample project is an XCode project and the storyboard file is NOT included in the zip file list. You MUST launch XCode and do the EXPORT. Perhaps this should be obvious, but I’d still recommend making it more clear, especially for those of us who really never use XCode for anything - I used to use XCode to see console messages via ‘devices’, but now I’ve found using the Applications -> Utilities -> Console.app much easier, so really, I never have to use XCode - and isn’t that one benefit of Corona (non-Enterprise)?

  2. Also, another important worthwhile point is to know that when you export from XCode, you need to export the ‘package’, not just the storyboard. This will result in the proper filename “LaunchScreen.storyboardc” - whereas the ‘c’ at the end is missing if you don’t export the ‘package’.

  3. It may also be worth mentioning that after putting “UILaunchStoryboardName = “LaunchScreen”,” in build.settings in the iPhone - plist section, that we can either remove or block-comment out the uilaunchimages section using --[[and --]]

If these two points were more clear in the docs, I wouldn’t have had to bother you so much. So, please accept my apologies. Hopefully this feedback will be helpful.

I love Corona and the amazing technical support work your team is doing. Seriously. With the new version of Play The Bible Ultimate Verses due out by the end of April, many have told me it is the most sophisticated Corona-based game they’ve seen. If there are any features I’ve implemented that you feel may be of benefit to the community, just let me know and I’ll do my best to keep contributing to this amazing, thriving community of developers.

I’ll pass the notes on.

Rob

“many have told me it is the most sophisticated Corona-based game they’ve seen” - Now there is a sweeping statement :wink:

@SphereGameStudios, yes, perhaps. Sophisticated simply means the number of features implemented. I’d prefer to hear “best game play” or something as such. The point is, however, that Corona is a fantastic platform that allows us to create sophisticated apps thanks to a solid core and expansive plugin library.

Well, I thought this problem was solved, but now I’m getting this message on my iOS device:

Fatal error generating launch image for com.playthebible.rdgames: Error Domain=UILaunchStoryboardErrorDomain Code=2 “Error loading: There doesn’t seem to be a valid compiled storyboard at path ‘/var/containers/Bundle/Application/3262625D-D584-4F35-A009-CFA32113C199/PlayBible.app/LaunchScreen.storyboardc’” UserInfo={NSLocalizedDescription=Error loading: There doesn’t seem to be a valid compiled storyboard at path ‘/var/containers/Bundle/Application/3262625D-D584-4F35-A009-CFA32113C199/PlayBible.app/LaunchScreen.storyboardc’, UILaunchStoryboardClientBundleIdentifier=com.playthebible.rdgames}

Any idea what’s wrong?

@troylyndon
It looks like you renamed a ‘.storyboard’ file to ‘storyboardc’. When you export the Launchscreen you must change the File Type to Interface Builder Storyboard Package. (See Step 9 under Xcode Configuration here)
If you forget this step, the exported file will be of type ‘.storyboard’ instead of ‘.storyboardc’.

Okay, one problem remains. Although I can see my launch images, it seems no matter how I attempt to rotate our logo on the launch screen images, it always appears in portrait mode - so with our game working only in landscape mode, is there some setting that must be changed for a landscape mode launch screen, since rotating the images 90 degrees doesn’t appear to work?

The launch code seems to detect the rotation of the image and always set it to portrait. This is very strange.

@troylyndon

If you design your png files in landscape orientation (example @1x=480x320, @2x=960x640, @3x=1440x960) it should work.

Keep in mind that iOS is a bit nasty when you switch launch screens as the system caches the old launch screen. 

Any change to the launch screen will not show up just by deleting the app and reinstalling a new one.

The only way to empty the system cached launch screen is to delete the app and reboot the device. After rebooting you can install the app with the new launch screen.

@ingemar_cl

  1. your suggestion worked exactly. However, on my iPhone 7, the width of the Launchscreen images doesn’t reach the edges, and so there is black on the left and right. Do you happen to know if I can extend the width of the Launchscreen images without breaking it?

  2. perhaps the best advice you provided was the note that the iOS is, as you put it, a bit nasty by caching the launch images, so I couldn’t see the changes I was making. Thanks a lot for that great insight!

@troylyndon

In the Launchscreen Xcode project you can change the Content Mode of the Launch image from “Aspect Fit” to “Aspect Fill”.  The launch image is found in ViewControllerScene->ViewController->Launch and and Content Mode is found in the Attributes Inspector within the Utilities panel on the left (4th icon from the left, looks like a small slider).

With “Aspect Fill”, keep in mind that you should not have any objects near the edges of your image as on some devices the image will zoom in to fill the black areas. In your case, for phones, the top and bottom parts of the image will bleed off-screen, so be careful not to have any objects close to the top/bottom of your image. On tablets the left/right parts of the image will bleed off screen, so you should keep and eye on that too.

You can see the result of what your images will look like on different devices directly within Xcode without having to install on device.

There is a “View as:” area on the bottom-left of the work area. Click on it to reveal a device/orientation selection list. From there you can select different devices/orientations to view how the launch image will look on that particular device.

Having thought about it some more, it may be better for you to design your images in a 16:9 ratio instead of the rather outdated 3:2 ratio as most phones nowadays have a 16:9 ratio. You should still change the Content Mode to “Aspect Fill” to avoid black bars though, and pay attention not to have objects near the edges just in case the edges bleed off screen.

Or just change the background color of the storyboard to match the background color of your image. In Xcode, click on the outermost object in the Storyboard View and in the inspector on the right (middle tab of the 5 small tabs at the top, I think, I don’t have xcode up, but the tutorial should cover this), find the color setting and make it whatever you need it to be.

Rob

D’oh!

@troylyndon

Go with Rob’s suggestion…The most obvious (and best) choice  :wink: