apache / cordova-ios

Apache Cordova iOS
https://cordova.apache.org/
Apache License 2.0
2.15k stars 986 forks source link

SplashScreen not loading on cordova-ios@7.0.1 #1401

Open adirgan opened 2 months ago

adirgan commented 2 months ago

Bug Report

Problem

When I just prepared for iOS, everything is created correctly, and I manage to run the application in the iOS emulator, but the splash screen does not load, it remains blank

What is expected to happen?

When adding the iOS platform, the splash screen is created correctly and displayed when the app is run

What does actually happen?

When I prepared the app for iOS, everything was created correctly and I managed to run the app in the iOS emulator, but the home screen does not load, it remains blank.

Now when I try to manually place the Launch Screen File in General, and place the CDVLaunchScreen.storyboard and compile, the app no longer loads, every time I open the app it crashes with the following error.

"*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'CDVLaunchScreen.storyboard' in bundle NSBundle"

I tried to create a Launch.storyboard myself in xcode, and it always gives me the same error that it cannot be found in the NSBundle.

I've been trying to figure out a solution for 10 hours, and I can't find any solution.

Information

Add iOS to a Cordova project in version 7.0.1, and prepare the project

Command or Code

Environment, Platform, Device

Mac OS, Sonoma

Emulator of iOS 17.2

Version information

Cordova CLI: 12.0.0 Cordova IOS: 7.0.1

Mac OS Sonoma, Xcode 15.2

Checklist

taxman007 commented 2 months ago

running into the same issue. Was hoping Cordova Resources would do the trick, but no luck :(

jcesarmobile commented 2 months ago

can you provide a sample app?

adirgan commented 1 month ago

Any idea what it could be?

@jcesarmobile @taxman007

taxman007 commented 1 month ago

Any idea what it could be?

@jcesarmobile @taxman007

Hmm. First, I would try to reinstall Cordova/ios

What I noticed with my Cordova IOS is that I had to manually add the respective splash screen, after running Cordova Resources. Seems like a bug in Cordova/iOS but I am also still running Ionic 6. So it could be a compatibility issue.

adirgan commented 1 month ago

Could you give me a clearer idea of how you solved it?

Since I installed everything fresh, but it only happens when I upgrade to version 7

When you refer to adding the splash screen manually, what do you mean?

Sorry for the inconvenience, I've really been dealing with this for a long time and I need to solve it.

@taxman007 Thanks if you can help me

halie412 commented 4 weeks ago

@adirgan

Hi, i was stucked on same error some hours and is related to documentation, you need add to config.xml all the spash images manually in actual size in your platform ios, the size of each image you can find in https://cordova.apache.org/docs/en/6.x/reference/cordova-plugin-splashscreen/

Take special attemption between universal and iphone are different, like: Default@2x~universal~anyany.png is 2732px X 2732px Default@2x~iphone~anyany.png is 1334px X 1334px

Each image are on root project / res / screen / ios

I add this to my config:

`

    <splash src="res/screen/ios/Default@2x~universal~comany.png" />
    <splash src="res/screen/ios/Default@2x~universal~comcom.png" />
    <splash src="res/screen/ios/Default@3x~universal~anyany.png" />
    <splash src="res/screen/ios/Default@3x~universal~anycom.png" />
    <splash src="res/screen/ios/Default@3x~universal~comany.png" />
    <splash src="res/screen/ios/Default@2x~iphone~anyany.png" />
    <splash src="res/screen/ios/Default@2x~iphone~comany.png" />
    <splash src="res/screen/ios/Default@2x~iphone~comcom.png" />
    <splash src="res/screen/ios/Default@3x~iphone~anyany.png" />
    <splash src="res/screen/ios/Default@3x~iphone~anycom.png" />
    <splash src="res/screen/ios/Default@3x~iphone~comany.png" />
    <splash src="res/screen/ios/Default@2x~ipad~anyany.png" />
    <splash src="res/screen/ios/Default@2x~ipad~comany.png" />

`

RachelQChen commented 2 weeks ago

I had the same error, but I don't use SplashScreen. My solution is: go to Info.plist, set the value of 'Launch screen interface file base name' to be 'CDVLaunchScreen', instead of 'CDVLaunchScreen.storyboard', delete '.storyboard', everything goes on smoothly then~

matictrebusak commented 1 week ago

I experienced this issue as well. I was getting two different splashes, first is native ios and then cordova splash, which did not scale and was shown as logo being off-center. Solution for me was:

  1. (may be optional) Add "Default@3x~universal~anyany.png" (2208x2208) as well to config.xml and resource folder. This asset should be smaller then @2x as referenced in cordova docs. If it uses 2x (2732X2732), which worked ok in cordova-ios@6+, it is actually too big , and you experience first black screen and then white screen because splash screen is not appropriately read. So my config for ios splash is: <splash src="resources/ios/splash/Default@2x~universal~anyany.png"/> <splash src="resources/ios/splash/Default@3x~universal~anyany.png"/>
  2. (needed) I found a fork in which a feature for rotating splash screens is reverted (was introduced in 7.0.0 I think) https://github.com/jessyefuster/cordova-ios/commits/7.1.1

I imagine this will be merged soon to main project and everything will be well again. Hope it helps someone in the meanwhile as I was stuck with this for one week.