Bug 26260 - [iOS] Splash screen not shown in iPad iOS 8.1, displayed correctly in iPad iOS 7.1
Summary: [iOS] Splash screen not shown in iPad iOS 8.1, displayed correctly in iPad iO...
Status: RESOLVED ANSWERED
Alias: None
Product: iOS
Classification: Xamarin
Component: General ()
Version: XI 8.6.0
Hardware: PC Mac OS
: High major
Target Milestone: Untriaged
Assignee: Jeffrey Stedfast
URL:
Depends on:
Blocks:
 
Reported: 2015-01-21 18:57 UTC by Kent Green [MSFT]
Modified: 2015-02-24 08:54 UTC (History)
7 users (show)

Tags:
Is this bug a regression?: ---
Last known good build:


Attachments
Logs from my repo of the issue (324.82 KB, application/zip)
2015-01-21 18:57 UTC, Kent Green [MSFT]
Details
Asset catalog (4.13 KB, application/octet-stream)
2015-02-12 11:24 UTC, Adam Kapos
Details


Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.


Please create a new report on Developer Community or GitHub with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.

Related Links:
Status:
RESOLVED ANSWERED

Description Kent Green [MSFT] 2015-01-21 18:57:18 UTC
Created attachment 9439 [details]
Logs from my repo of the issue

---Overview---
From this desk case:
https://xamarin.desk.com/agent/case/119233

Customer reports that their app is no longer displaying the splash screen in iOS 8.1, when it was working as expected in iOS 7.1. I was able to reproduce the bug in the iPad 2 iOS 8.1 simulator, and the normal expected behavior in the iPad 2 iOS 7.1 simulator. 

Since the sample is from a customer, I will add it shortly as a private attachment, along with more detailed steps to reproduce the issue. 

---Build Info---
Xamarin Studio
Version 5.7 (build 661)
Installation UUID: 56872acb-c69b-4513-9716-59739ffede61
Runtime:
Mono 3.12.0 ((detached/a813491)
GTK+ 2.24.23 (Raleigh theme)

Package version: 312000068

Apple Developer Tools
Xcode 6.1.1 (6611)
Build 6A2008a

Xamarin.iOS
Version: 8.6.0.51 (Business Edition)
Hash: dfb682f
Branch: 
Build date: 2015-01-08 13:39:32-0500

Xamarin.Android
Not Installed

Xamarin.Mac
Not Installed

Build Information
Release ID: 507000661
Git revision: b70bab61da996da29045ea8ee8aed1a6faedbe78
Build date: 2015-01-05 16:31:31-05
Xamarin addins: 82f6c71490562d6cd125a09287f441902fdac3d7

Operating System
Mac OS X 10.9.5
Darwin RichardLapTop-2.local 13.4.0 Darwin Kernel Version 13.4.0
Sun Aug 17 19:50:11 PDT 2014
root:xnu-2422.115.4~1/RELEASE_X86_64 x86_64

---Additional Info---
Including log files from my repo test of the bug.
Comment 2 Rolf Bjarne Kvinge [MSFT] 2015-01-22 05:04:54 UTC
Jeff, this looks related to assets, any idea what it might be?
Comment 3 Jatin 2015-01-22 05:24:48 UTC
I have tried to reproduce this issue at my end and have observed that the
Project attached in the bug is giving build error. Below is the details for the
same:

Build output: https://gist.github.com/saurabh360/c9b3360b871740f1aee7
IDE Logs: https://gist.github.com/saurabh360/cdfa5044858e170c487a

However, with the following steps I was able to reproduce this issue:

1. Open XS
2. Create a single view application (iOS >> Unified API)
3. Add a Launch Image in the application
4. Now Debug the application on the 8.1 simulator
5. Observation 1: Launch image does not appear rather the name of the
application appears.
6. Now again debug the application on the 7.1 simulator
7. Observation 2: Launch image appears successfully.

Hence, confirming the bug w.r.t the above steps.
Comment 4 Jatin 2015-01-22 05:26:03 UTC
An update to above comment #3:

It is working fine with the Classic API applications.
Comment 5 David 2015-01-28 04:40:18 UTC
I believe this issue is caused due to a key-value pair in the Info.plist file. Remove the following key value pair from the Info.plist (by editing with your favourite text editor):
 
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>

Cheers!
Comment 6 richard 2015-01-29 10:27:02 UTC
Removing the UILaunchStoryboardName did fix the Ipad Launch Screen - however they still don't show on the Phone.
Comment 7 Adam Kapos 2015-02-03 11:55:33 UTC
I have this problem too.

I use asset catalog for icons and launch images and the launch images are no longer working on iPhone (tested on 4S running iOS 7 and 5 running iOS 8). There is just a black screen. Works fine on iPad running iOS 8.

I haven't got the key value pair mentioned in Info.plist.

We didn't have the issue before upgrading to the unified API.

This is really critical as we can't release our app until splash screen isn't working.
Comment 8 Adam Kapos 2015-02-05 15:42:52 UTC
Any updates? This is a showstopper for us at the moment.
Comment 9 PJ 2015-02-05 15:56:35 UTC
Updating priority/severity.
Comment 10 Adam Kapos 2015-02-05 15:57:16 UTC
Thanks :)
Comment 11 Adam Kapos 2015-02-09 17:59:32 UTC
Any updates?
Comment 12 Rolf Bjarne Kvinge [MSFT] 2015-02-10 03:45:10 UTC
Jeff, can you comment on this?
Comment 13 Jeffrey Stedfast 2015-02-10 14:12:13 UTC
Yea, the problem seems to be that the iOS 8 launch screens are not set in the asset catalog.
Comment 14 Adam Kapos 2015-02-11 17:42:30 UTC
It's Wednesday already. We really need a fix.
Comment 15 Jeffrey Stedfast 2015-02-12 10:43:15 UTC
You need to set iOS 8 launch images in the asset catalog. iOS 8 won't use the iOS 7 launch images.
Comment 16 Adam Kapos 2015-02-12 11:24:09 UTC
Created attachment 9794 [details]
Asset catalog

This asset catalog doesn't show any launch images on an iPhone 4S running iOS 7 and an iPhone 5 running iOS 8
Comment 17 Adam Kapos 2015-02-12 11:25:42 UTC
The app is a landscape one with only landscape orientations enabled in Info.plist.
Comment 18 Adam Kapos 2015-02-12 11:50:48 UTC
Seems to be an XCode bug.
Comment 19 richard 2015-02-12 12:02:54 UTC
We did submit three apps to the store in this state - and they did get approved. Of course your results may vary with the crack approval team at apple. Our app is also landscape only on the Phone.
Comment 20 Jeffrey Stedfast 2015-02-12 12:06:15 UTC
Any chance you could attach the LaunchImages.launchimage directory instead of just the COntents.json file? I don't have sample images to use for testing your configuration.
Comment 21 Jeffrey Stedfast 2015-02-12 12:07:25 UTC
Oh, n/m, I guess if this is an Xcode bug I don't need to dig into this further?
Comment 23 Jeffrey Stedfast 2015-02-12 12:54:59 UTC
Okay, so... all 13 images are ending up in the compiled app bundle renamed appropriately:

iCropTrakApp.app/LaunchImage-800-Landscape-736h@3x.png
iCropTrakApp.app/LaunchImage-800-667h@2x.png
iCropTrakApp.app/LaunchImage-700@2x.png
iCropTrakApp.app/LaunchImage-700-568h@2x.png
iCropTrakApp.app/LaunchImage-700-Landscape~ipad.png
iCropTrakApp.app/LaunchImage-700-Landscape@2x~ipad.png
iCropTrakApp.app/LaunchImage.png
iCropTrakApp.app/LaunchImage@2x.png
iCropTrakApp.app/LaunchImage-568h@2x.png
iCropTrakApp.app/LaunchImage-Portrait~ipad.png
iCropTrakApp.app/LaunchImage-Landscape~ipad.png
iCropTrakApp.app/LaunchImage-Portrait@2x~ipad.png
iCropTrakApp.app/LaunchImage-Landscape@2x~ipad.png

The Info.plist in the app bundle contains the following (annotated with comments):

	<key>UILaunchImageFile</key>
	<string>LaunchImage</string>

// According to https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW24
// this should match LaunchImage.png, LaunchImage@2x.png, and LaunchImage-568h@2x.png
// for iPhones and LaunchImage-Portrait~ipad.png, LaunchImage-Landscape~ipad.png,
// LaunchImage-Portrait@2x~ipad.png and LaunchImage-Landscape@2x~ipad.png for iPads.

	<key>UILaunchImages</key>
	<array>
		<dict>
			<key>UILaunchImageMinimumOSVersion</key>
			<string>8.0</string>
			<key>UILaunchImageName</key>
			<string>LaunchImage-800-Landscape-736h</string>
			<key>UILaunchImageOrientation</key>
			<string>Landscape</string>
			<key>UILaunchImageSize</key>
			<string>{414, 736}</string>
		</dict>

// This should match LaunchImage-800-Landscape-736h@3x.png (iPhone6+ Landscape w/ iOS 8)

		<dict>
			<key>UILaunchImageMinimumOSVersion</key>
			<string>8.0</string>
			<key>UILaunchImageName</key>
			<string>LaunchImage-800-667h</string>
			<key>UILaunchImageOrientation</key>
			<string>Portrait</string>
			<key>UILaunchImageSize</key>
			<string>{375, 667}</string>
		</dict>

// This should match LaunchImage-800-667h@2x.png (iPhone6 Portrait w/ iOS 8)

		<dict>
			<key>UILaunchImageMinimumOSVersion</key>
			<string>7.0</string>
			<key>UILaunchImageName</key>
			<string>LaunchImage-700</string>
			<key>UILaunchImageOrientation</key>
			<string>Portrait</string>
			<key>UILaunchImageSize</key>
			<string>{320, 480}</string>
		</dict>

// This should match LaunchImage-700@2x.png (iPhone4s Portrait w/ iOS 7)

		<dict>
			<key>UILaunchImageMinimumOSVersion</key>
			<string>7.0</string>
			<key>UILaunchImageName</key>
			<string>LaunchImage-700-568h</string>
			<key>UILaunchImageOrientation</key>
			<string>Portrait</string>
			<key>UILaunchImageSize</key>
			<string>{320, 568}</string>
		</dict>

// This should match LaunchImage-700-568h@2x.png (iPhone5 Portrait w/ iOS 7.x)

		<dict>
			<key>UILaunchImageMinimumOSVersion</key>
			<string>7.0</string>
			<key>UILaunchImageName</key>
			<string>LaunchImage-700-Landscape</string>
			<key>UILaunchImageOrientation</key>
			<string>Landscape</string>
			<key>UILaunchImageSize</key>
			<string>{768, 1024}</string>
		</dict>

// This should match LaunchImage-700-Landscape~ipad.png and LaunchImage-700-Landscape@2x~ipad.png

	</array>


Interestingly, the notices from actool include:

/* com.apple.actool.document.notices */
/Users/fejj/Downloads/iCropTrakApp/Resources/Images.xcassets:./LaunchImage.launchimage/[iphone][736h][3x][landscape][full-screen][8.0]: notice: This launch image only applies to iOS 6.x and prior but the minimum deployment is 7.0 or later.
/Users/fejj/Downloads/iCropTrakApp/Resources/Images.xcassets:./LaunchImage.launchimage/[iphone][667h][2x][portrait][full-screen][8.0]: notice: This launch image only applies to iOS 6.x and prior but the minimum deployment is 7.0 or later.
/Users/fejj/Downloads/iCropTrakApp/Resources/Images.xcassets:./LaunchImage.launchimage/[iphone][][1x][portrait][full-screen][]: notice: This launch image only applies to iOS 6.x and prior but the minimum deployment is 7.0 or later.
/Users/fejj/Downloads/iCropTrakApp/Resources/Images.xcassets:./LaunchImage.launchimage/[iphone][][2x][portrait][full-screen][]: notice: This launch image only applies to iOS 6.x and prior but the minimum deployment is 7.0 or later.
/Users/fejj/Downloads/iCropTrakApp/Resources/Images.xcassets:./LaunchImage.launchimage/[iphone][retina4][2x][portrait][full-screen][]: notice: This launch image only applies to iOS 6.x and prior but the minimum deployment is 7.0 or later.
/Users/fejj/Downloads/iCropTrakApp/Resources/Images.xcassets:./LaunchImage.launchimage/[ipad][][1x][portrait][full-screen][]: notice: This launch image only applies to iOS 6.x and prior but the minimum deployment is 7.0 or later.
/Users/fejj/Downloads/iCropTrakApp/Resources/Images.xcassets:./LaunchImage.launchimage/[ipad][][1x][landscape][full-screen][]: notice: This launch image only applies to iOS 6.x and prior but the minimum deployment is 7.0 or later.
/Users/fejj/Downloads/iCropTrakApp/Resources/Images.xcassets:./LaunchImage.launchimage/[ipad][][2x][portrait][full-screen][]: notice: This launch image only applies to iOS 6.x and prior but the minimum deployment is 7.0 or later.
/Users/fejj/Downloads/iCropTrakApp/Resources/Images.xcassets:./LaunchImage.launchimage/[ipad][][2x][landscape][full-screen][]: notice: This launch image only applies to iOS 6.x and prior but the minimum deployment is 7.0 or later.


These 2 notices from above are straight up WTF:

/Users/fejj/Downloads/iCropTrakApp/Resources/Images.xcassets:./LaunchImage.launchimage/[iphone][736h][3x][landscape][full-screen][8.0]: notice: This launch image only applies to iOS 6.x and prior but the minimum deployment is 7.0 or later.
/Users/fejj/Downloads/iCropTrakApp/Resources/Images.xcassets:./LaunchImage.launchimage/[iphone][667h][2x][portrait][full-screen][8.0]: notice: This launch image only applies to iOS 6.x and prior but the minimum deployment is 7.0 or later.

Notice how even actool recognizes that these images are marked as 8.0 in the []'s but the notice claims that the iPhone 6 images are only for iOS 6.x and prior??? WTF, Apple?

I don't think that's the source of your problem, though, because you said it only fails for iPhone4s running iOS 7 and iPhone5 running iOS 8, right?

iPhone4s w/ iOS 7 should show LaunchImage@2x.png which should be gotten from the UILaunchImageFile key. The iPhone5 should be also be getting the launch image from that key and using LaunchImage-568h@2x.png

I think you might be right about this being an Apple bug, but probably not an Xcode bug... more likely an iOS bug (unless maybe the bug is that the generated Info.plist keys for the UILaunchImages is wrong?).
Comment 24 Adam Kapos 2015-02-12 12:58:37 UTC
This is the description of the bug from Apple:
http://stackoverflow.com/questions/25886703/supporting-iphone-6-and-iphone-6-with-different-launch-splash-screen-image-for/26275887#26275887

This is what resolved it for me:
http://stackoverflow.com/a/25960203

Note that I changed UILaunchImageMinimumOSVersion from 8.0 to 7.0 so it will also work on iPhones running iOS 7.
Comment 25 Jeffrey Stedfast 2015-02-12 13:00:16 UTC
Ah, interesting. Thanks Adam.
Comment 26 Adam Kapos 2015-02-24 08:54:41 UTC
I would like to note that the fix does not work when deploying from Visual Studio. It only works from Xamarin Studio, so there might be a bug in how Info.plist is handled.