Prepare your iOS app for the 2020 Apple requirements

Titanium apps
Apple typically gives developers some time to adapt their apps to the new iOS/Xcode versions. In April 2020, Apple is requiring you to do a couple of things for every update or new app. For Titanium Apps, this is not any different!

1. Launch Storyboard

Since the beginning, iOS has supported Launch Images, which were static images with specific resolutions. However, starting in April 2020, you will have to have Launch Storyboard in your app.

Luckily for you, in Titanium there already is a Storyboard build-in by default. The default Storyboard is a screen with a solid background-color and the app logo in the center. Your app logo is the defaultIcon.png file in the root of your directory. Then the solid background-color should probably be the same as the background color of your app icon.

READ MORE: Give your Titanium App a turbo boost.

By default, this is enabled if you haven’t explicitly disabled it in tiapp (as per step 2).

  1. Make sure your DefaultIcon.png in the root of the directory is your app logo. It needs to be 1024x1024px.
  2. Enable Storyboard in tiapp.xml by changing this key inside the <ios>section to true, or by removing the property entirely.

3. Customize your color by adding this key inside the <ios> section, and then replace the #hex color by your color of choice.


4. Remove all splash screens in /assets/iphone. These files will only increase your app size at this point, as they are compiled into your app but no longer used.

And you’re done! You now have a flexible storyboard.

If the default storyboard is not to your liking, you can make your own storyboard. A .storyboard file is a file you can create using Xcode. Put this storyboard file in app/platform/ios/LaunchScreen.storyboard (for Alloy projects) or platform/ios/LaunchScreen.storyboard (for classic projects). For a full guide on how to use custom storyboards follow this guide in the documentation.

Any image in your custom storyboard requires a hash instead of a filename because of the way the asset catalog is built up. You can check this ticket on JIRA to see how to get that hash and this ticket on Jira to follow updates regarding changes surrounding that.

2. Support any size

Any app uploaded to the AppStore needs to work on all devices you submit for. If you upload an iPhone app your app will need to work on all devices/resolutions in existence (that can download your app based on minimum iOS version), but also any iPhone device coming out in the future. Keep that in mind when designing your app.

Always expect the unexpected. Like when first the iPhone X came out, a notch wasn’t expected. Any UI that was built by non-default UI elements didn’t function properly as UI elements were hidden behind the notch. Changes like this could happen again.

If you upload an iPad app, have a look at #3:

3. Support split-screen multi-tasking

Starting April 2020, your iPad app will have to support multitasking. This might be a tough one! Especially considering a lot of apps have a different UI on iPads that don’t fit well in the narrow multitasking screen. Now, take this into consideration. To test this, make sure your UI is flexible and where needed (try to avoid this) build in conditions to change your UI based on the width of the screen. Start testing today!

4. Build your app with Titanium SDK 8.2.0.GA or higher

Starting in April 2020, you will need to compile your app against iOS 13/Xcode 11. This means any update or new app you release starting April 2020 will need to be built using Titanium SDK 8.2.0.GA or higher. If you are still on anything below 8.2 make sure you start upgrading as soon as possible. This also means it can upgrade some other things. Your current stack should look like this:

  • Latest Node 10.x
  • Appc CLI 7.1.1 (or higher)
  • Titanium SDK 8.2.0.GA (or higher)

Especially the Node upgrade is important, as starting with Titanium SDK 9.0 node 8.x/9.x will no longer be supported. Using the latest 10.x is important, so make sure you’re always up to date.

Learn more about the GA release of Titanium SDK 8.2.1.