Submitting to the iOS App Store
From Xojo Documentation
|You are currently browsing the old Xojo documentation site. Please visit the new Xojo documentation site!|
When you have finished developing and testing your app, you can submit it to the App Store to make it available to everyone. These steps should help get you started, but most of the specifics are defined by Apple, so you may want to also review the official Apple App Distribution Guide.
Note that Apple constantly changes these steps so although some of the specifics might be a little different, the overall process should be similar.
As of 2021 Apple requires that apps submitted to the App Store are built using the iOS 14 SDK, which is included with Xcode 12. Xojo 2021r1 and later work with Xcode 12 and use the iOS 14 SDK. Earlier versions of Xojo can still build to install directly on devices, but your builds cannot be submitted to the App Store.
|iOS SDK||Xojo Version|
|iOS 15 SDK||2021r3|
|iOS 14 SDK||2021r1|
|iOS 13 SDK||2019r2|
|iOS 12 SDK||2018r4|
|iOS 11 SDK||2018r1|
This section describes the steps to deploy your iOS App to the App Store. You can also watch the webinar for guidance: Deploying iOS Apps.
To build for the App Store, you need to be a member of the Apple Developer Program and have the correct certificates, identifiers and a distribution provisioning profile. You will be using Xcode and the iOS Development Portal to set this up.
Do not submit apps to the App Store until you have tested on an actual device by following the steps in the iOS Device Deployment topic.
iOS Distribution Certificate
- In Xcode Preferences, select the Accounts panel, select the account for your Apple ID
- Click the "Manage Certificates" button.
- Click the "+" in the left corner and select "iOS Distribution" to create the necessary certificates.
- Click "Done" to close the window.
Next, you can create an App ID at the iOS Dev Center.
If you are part of a team, it is possible that the Team Administrator has already created the iOS Distribution certificate. In this case, you should not recreate them as that will revoke the previously created ones. Instead, ask your Team Administrator to export the iOS Distribution certificate and send it to you so you can install it in your Keychain. Without this certificate any apps you submit to the App Store will be rejected by Application Loader. Refer to Apple's App Distribution Guide for information about exporting certificates.
This step is optional, since you can use the same App ID you have already been using for device deployments.
- Log in to the Apple Developer Portal at https://developer.apple.com/account.
- Select "Certificates, Identifiers & Profiles".
- Select "iOS, tvOS, watchOS" In the popup menu on the left. In the Identifiers section, click App ID and then the "+" to register a new Application ID. Create an app-specific App ID of the form: "com.mycompany.myapp" which can only be used with a single app. Regardless, the App ID must match what you have specified as the Bundle Identifier in the iOS Build Settings for your project.
- Click Continue and then Submit.
Now you can create your Distribution Provisioning Profile.
Generate Distribution Provisioning Profile
In the Provisioning Profile section, click Distribution.
- Click "+" to add a provisioning profile.
- Select "App Store" in the Distribution section and then Continue.
- Select the App ID. If you created one above, then use the one you created. Otherwise use the one you've been using for device deployment. Click Continue.
- Select the Certificate and then Continue.
- Enter a name for the profile and then Continue.
- Click Done. You do not need to download the profile file.
Install the Provisioning Profile to Xcode
- In Xcode, go back to the Preferences, select Accounts and highlight your account.
- Click "Download Manual Profiles".
Now you are ready to add the app details to App Store Connect.
Add App to App Store Connect
If you have not already created the app details in App Store Connect, you'll need to go do that now.
- Visit http://appstoreconnect.apple.com and log in using your Apple ID.
- Click "My Apps" and click the "+" button to add a new iOS app.
- Here you will need to fill in all the information on the various pages, such as app name, description, screen shots, icon (1024x1024), rating, price, etc. You can save and go back to make updates.
- When everything is correct, the app status should show as "Prepare for Submission".
Now you are ready to build your Xojo app for the App Store so you can upload it.
Build Xojo App
- In Xojo, set "Build for App Store" property to ON in the iOS Build Settings.
- Select the appropriate Code Signing team and optionally specify any entitlements (on the Advanced Inspector tab).
- Verify that the bundle ID matches your App ID for example com.mycompany.myapp.
- In Shared Build Settings, ensure that all version fields are correct and that "Version" field has a value. If you are submitting an update because Apple rejected a previous submission, you must increment the Non-Release Version number. Enabling Auto-Increment Version in the Inspector will handle this for you automatically.
- Click Build. This creates an IPA (iOS App Archive) file which is what you will upload.
If You Use Build Steps
On iOS, there is an additional step added by default that is called "Sign". Any Copy File Build Steps that you add should be before the "Sign" step so that the files you have copied into the app bundle are properly signed for submission to the App Store.
If you have switched to Xcode 9 you may find you get build errors at the linking stage with text indicating an error with xcodebuild or provisioning profiles. If this occurs for you, try revoking your certificate and recreating both it and any provisioning profiles as described above. Your best option is to use a newer version of Xcode.
You can now upload the built app to App Store Connect.
- Install Apple Transporter, which is used to upload the built app to App Store Connect.
- Select the "+" or click the "ADD APP" button.
- Follow the steps to select the IPA file from your Xojo build and send it to App Store Connect for verification.
- If there were errors, you'll need to correct them, rebuild and resubmit.
Submit for Review
Once your app is verified and uploaded, your final step is to go back to iTunes Connect:
- Click "My Apps" and select your app from the list.
- Select the build that was just uploaded and Save.
- Update any other fields that Apple requires.
- Click "Submit for Review".
Be patient. It can take as long as several days before an app is approved or you hear back from the reviewer. If your app reviewers finds issues, you'll need to fix them, rebuild, upload and resubmit. Visit http://appreviewtimes.com to track estimates of recent App Store review times.
If you need to resubmit a build to App Store Connect, you will need to increase the Bug Version number in your Xojo project's Shared Build Settings.
Below are some solutions for errors that you may get when uploading using Application Loader.
|ITMS-90475||Invalid Bundle. iPad Multitasking support requires launch story board in bundle 'com.acme.myapp'.||Remove Launch Images project item. Use a Launch Screen instead.|
|ITMS-90023||Missing required icon file. The bundle does not contain an app icon for iPad of exactly '167x167' pixels, in .png format for iOS versions supporting iPad Pro.||Delete App Icon project item and then add it back (using Insert -> App Icon). Now you can add all the app icons, including the iPad Pro 167x167 icon.|
|Distribution profile is required to submit to the app store.||Verify that you have installed the iOS Distribution public certificate on your computer. Usually Xcode does this for you, but you may also want to try manually downloading it from the Apple Developer Portal (Certificates->Production) and double-clicking it to ensure it gets installed into the Keychain.|
|ITMS-90035||Invalid Signature. A sealed resource is missing or invalid. Make sure you have signed your application with a distribution certificate, not an ad hoc certificate or a development certificate.||Ensure you have correctly installed the iOS App Distribution certificate as shown above.|
|ITMS-90164||Invalid Code Signing Entitlements. The entitlements in your app bundle signature do not match the ones that are contained in the provisioning profile.||Ensure you have correctly installed the iOS App Distribution certificate as shown above.|
|ITMS-90179||Invalid Code Signing. The executable 'Payload/MyApp.app/MyApp' must be signed with the certificate that is contained in the provisioning profile.||Ensure you have correctly installed the iOS App Distribution certificate as shown above.|
If you are still having troubles, you may want to remove all provisioning profiles from your computer, recreated them at the iOS Dev Center and re-download everything again. The provisioning profiles on your computer are located here:
- ~Library/MobileDevice/Provisioning Profiles