UserGuide

Submitting to the iOS App Store

From Xojo Documentation

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.

As of 2018 the App Store requires your app is built using the iOS 11 SDK, which is included with Xcode 9. Xojo 2018r1 and later work with Xcode 9 and use the iOS 11 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 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: 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

  1. In Xcode Preferences, select the Accounts panel, select the account for your Apple ID
  2. In Xcode 8.2 or earlier:
    1. Click the "View Details" button.
    2. In the Signing Identifies section, click the "Create" button next to "iOS Distribution" to create the necessary certificates.
    3. Click "Done" to close the window.
  3. In Xcode 8.3.x, Xcode 9.x or Xcode 10.x:
    1. Click the "Manage Certificates" button.
    2. Click the "+" in the left corner and select "iOS Distribution" to create the necessary certificates.
    3. 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.

Identifiers

This step is optional, since you can use the same App ID you have already been using for device deployments.

  1. Log in to the Apple Developer Portal at https://developer.apple.com/account.
  2. Select "Certificates, Identifiers & Profiles".
  3. 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. It is easiest to specify a "Wildcard App ID" of the format "com.mycompany.*", which can be used with all your apps. You can also 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.
  4. Click Continue and then Submit.

Now you can create your Distribution Provisioning Profile.

Generate Distribution Provisioning Profile

In the Provisioning Profile section, click Distribution.

  1. Click "+" to add a provisioning profile.
  2. Select "App Store" in the Distribution section and then Continue.
  3. 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.
  4. Select the Certificate and then Continue.
  5. Enter a name for the profile and then Continue.
  6. Click Done. You do not need to download the profile file.

Install the Provisioning Profile to Xcode

  1. In Xcode, go back to the Preferences, select Accounts and highlight your account.
  2. In Xcode 8.2 or earlier
    1. Click "View Details".
    2. In the Provisioning Profiles section you should see the profile you created above. Click Download.
    3. Click Done.
  3. In Xcode 8.3.x:
    1. Click "Download All Profiles".
  4. In Xcode 9.x or later:
    1. 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.

  1. Visit http://appstoreconnect.apple.com and log in using your Apple ID.
  2. Click "My Apps" and click the "+" button to add a new iOS app.
  3. 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.
  4. 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

  1. In Xojo, set "Build for App Store" property to ON in the iOS Build Settings.
  2. Select the appropriate Code Signing team and optionally specify any entitlements (on the Advanced Inspector tab).
  3. Verify that the bundle ID matches your App ID (or wildcard App ID). For example if your wildcard ID is "com.mycompany.*", then your bundle ID must start with "com.mycompany" and be followed with the app name. So a final bundle ID might be "com.mycompany.myapp".
  4. In Shared Build Settings, ensure that all version fields are correct and that "Short Version" has a value. If you have to submit an update to the App Store, you will need to increase the version information.
  5. 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.

Troubleshooting

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.

Upload App

You can now upload the built app to App Store Connect.

  1. Launch Application Loader (from Xcode, in the Xcode menu, select Open Developer Tools ↠ Application Loader), select "Deliver Your App" and click Choose.
  2. Follow the steps to select the IPA file from your Xojo build and send it to App Store Connect for verification.
  3. 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:

  1. Click "My Apps" and select your app from the list.
  2. Select the build that was just uploaded and Save.
  3. 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 version Bug version information in your Xojo project's Shared Build Settings.

Troubleshooting

Below are some solutions for errors that you may get when uploading using Application Loader.

Application Uploader Error Suggestion
ERROR 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.
ERROR 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.
ERROR 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.
ERROR 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.
ERROR 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

See Also

UserGuide:iOS Device Deployment, UserGuide:Submitting to TestFlight topics