iOS App Store: Checklist and Overview of the Process

01 June 2016

As a developer coming from a Windows background, I found the process of submitting an iOS app to the App Store somewhat intimidating. There's plenty of documentation on the Apple developer portal, but it seems fragmented and there's no can't-go-wrong checklist of steps available.

So, at least partly for my own reference, here's an overview of exactly what you need to do (or, at least what I did) to submit an iOS app to the store.

Overview of steps

  • Complete agreements (iTunes Connect)
    • Don't wait until your app's complete, goto iTunes Connect and complete the various agreements, tax forms and banking information required by Apple
    • Request an iOS Paid Applications contract. You will need to supply Contact Info, Banking Info (the account to receive money from your apps) and Tax Info
  • Create required media assets (Xcode)
    • Launch Screen
    • App icon
    • iTunesArtwork
  • Test with release build (Xcode)
    • Before submitting to the store you should build your app using the Release configuration. This is because apps can (and do) behave differently when compiled using the release configuration
  • Target settings (Xcode)
    • Bundle identifier - will be needed when creating an App ID in iTunes Connect
    • Version - increase each time you submit to the app store
    • Build - increase each time you submit to the app store
    • Team - select your Team (see Xcode Preferences, Accounts)
  • Create a distribution certificate (Xcode)
    • When ready to submit to the App Store you need to create a Distribution Certificate
    • Goto Xcode Preferences, Accounts
    • Select the required Team (you may only have one)
    • Click the iOS Distribution Create button. Xcode contacts the developer portal (iTunes Connect) to create and then download (into Xcode) the certificate
  • Register an App ID (Dev portal)
    • An App ID is a two-part string used to identify your apps. It consists of a Team ID and a Bundle ID
    • To create an App ID goto https://developer.apple.com/ and click on Identifiers > App IDs
    • Type the name for your app, select the App ID Prefix (your Team ID) from the dropdown, then type the Explicit App ID in all lowercase (e.g. com.company.appname)
  • Add an App (iTunes Connect)
    • You reserve your app name (even before it's ready submit to the app store) by adding it to iTunes Connect
    • Click on My Apps. Then click the + to add the app
    • Supply basic info about your app including the Name and Bundle ID - select this from the dropdown list of previously registered App IDs
  • Distribution Provisioning Profile (Dev portal)
    • A Provisioning Profile uniquely associates developers and devices with an iOS Development Team. It contains things like your AppID, distribution certificate, Team ID, etc
    • To create a Distribution Provisioning Profile goto https://developer.apple.com/ and click Certificates, IDs & Profiles, then click Provisioning Profiles > All
    • Click + to add a new profile, then select Distribution, App Store for the type of profile
    • Select the App ID of your previously registered app, then select your iOS Distribution certificate
    • Download the profile and double-click it. XCode will launch and install the profile
  • Build for Release and Upload (Xcode)
    • In your app's Target settings, under Build Settings > Code Signing > Code Signing Identity set the Release configuration to iOS Distribution. Also, make sure the Provisioning Profile is set to Automatic
    • Make sure that Generic iOS Device is selected as the destination device, then select Product > Archive
    • If the build is successful the Archive Organizer will open
    • Click Validate and select the distribution provisioning profile with which to sign the archive. Then click Validate
    • When validation is complete (and successful) upload the archive to iTunes Connect by clicking Upload to App Store... You'll see a confirmation when the upload is complete
  • Complete the submission (iTunes Connect)
    • Select My Apps, then select your app
    • Look under the Activity tab and you should see that your build has arrived and is being automatically "processed"
    • When automated processing of the build is complete, goto to the App Store tab, 1.0 Prepare for Submission section and you'll see a + is available next to Build. Click the + to select and add the newly uploaded build
    • Now Save the page - this allows you to return to completing the submission process later if you wish
    • Set your app's Pricing and Availability, then save your changes
    • Select 1.0 Prepare for Submission
    • Add screenshots for your app (4.7", 5.5", 4" and 3.5"), a description, along with keywords, and support and marketing URLs
    • Update the General App Information, including the app icon (1024x1024 png/jpg), copyright info, etc.
    • When ready, click Submit to App Store button!

Complete agreements (iTunes Connect)

  • Don't wait until your app's complete, goto iTunes Connect and complete the various agreements, tax forms and banking information required by Apple

  • When you accept the terms of your Registered Aple Developer Agreement a Free Applications contract is automatically created. This allows you to distribute free apps via the app store:

  • To submit paid apps to the app store you need to request an iOS Paid Applications contract:

  • You will then need to supply Contact Info, Banking Info and Tax Info:

Contact Info

  • Setup contacts (it may all be the same person) for key roles:

Banking Info

  • Note that you can change your bank account details at any time and payments will be sent to the one bank account selected
  • Multiple bank accounts aren't supported

Tax Info

  • Note that US tax forms are required for all developers


Create required media assets (Xcode)

  • Create a Launch Screen storyboard
  • Create an App Icon (in all required sizes):

  • Create iTunesArtwork:
    • 1x -> 512x512
    • 2x -> 1024x1024
    • 3x -> 1536x1536


Test with release build (Xcode)

  • Before submitting to the store you should build your app using the Release configuration. This is because apps can (and do) behave differently when compiled using the release configuration
  • First, check your app's Target Build Settings. Make sure the code signing is set to iOS Developer:

  • Attach a physical device to your development machine (or select Generic iOS Device as the destination device), then in Xcode select Profile instead of the normal Run (or select Product > Profile)

  • This will build for Release by default. When the Instruments application starts, click Cancel. Profiling is cancelled and the Release build is installed on the device


Target settings (Xcode)

  • Check that your app's Target settings are correct:

  • In particular, note:

    • Bundle identifier - will be needed when creating an App ID in iTunes Connect
    • Version - increase each time you submit to the app store
    • Build - increase each time you submit to the app store
    • Team - select your Team (see Xcode Preferences > Accounts)


Create a distribution certificate (Xcode)

When you develop an app Xcode automatically creates the necessary development certificate to allow you to install your apps on a development device. When you're ready to submit the app to the App Store you need to create a Distribution Certificate.

  • Goto Xcode Preferences > Accounts
  • Select the required Team (you may only have one)
  • Click View Details. You should see that you have an iOS Development certificate (if the specific certificate already exists there will be no Create button):

  • Click the iOS Distribution Create button. If all goes well you should just see the Create button disappear. Xcode contacts the developer portal to create and then download the certificate. You can do it through iTunes Connect, but it's simpler when using Xcode


Register an App ID (Dev portal)

  • An App ID is a two-part string used to identify your apps. It consists of a Team ID (supplied by Apple and unique to a specific development team) and a Bundle ID (taken from your app's Target settings (see above)), with a dot separating the two parts
  • To create an App ID goto https://developer.apple.com/ and login to your account
  • Click on Certificates, Identifiers & Profiles
  • You should see that you have both iOS Development and iOS Distribution certificates:

  • Now click on the left sidebar Identifiers > App IDs link
  • Type the name for your app, then select the App ID Prefix (your Team ID) from the dropdown. Type the Explicit App ID in all lowercase. This will be in the format com.company.appname (e.g. com.abcapps.myapp):

  • Select any services (HealthKit, etc.) your app uses and click Continue
  • Confirm your App ID by clicking Register:

  • You should see a confirmation of the completed registration


Add an App (iTunes Connect)

  • You "reserve" your app name (even before it's ready submit to the app store) by adding it to your iTunes Connect portal:

  • Click My Apps. Then click the + to add the app:

  • Add the following:
    • Platform (iOS, etc.)
    • Name (the name of the app)
    • Primary Language
    • Bundle ID - select this from the dropdown list of previously registered App IDs (see Register an App ID (Dev portal))
    • SKU - this is a free-form text field where you can add your "stock keeping unit" identifier for your app (e.g. YYYY-App-ID)
  • Click Create. If the app name's already taken (highly likely!) you'll get an error:

  • Assuming your app name's taken you'll also need to change the Bundle ID in Xcode and re-register the newly named app in the developer portal. There's a major flaw here in Apple's submission procedure: you can't check if a name's been taken until you register the name and then try to add it as an App in iTunes Connect.
  • Once you have successfully added the app in iTunes Connect you'll see:


Distribution Provisioning Profile (Dev portal)

A Distribution Provisioning Profile is a "collection of digital entities that uniquely ties developers and devices to an authorized iPhone Development Team". Actually, it's an encrypted plist that contains things like your AppID, developer certificate (e.g. distribution certificate), Team ID, etc.

  • To create a Distribution Provisioning Profile goto https://developer.apple.com/ and login to your account
  • Click the Certificates, IDs & Profiles link
  • In the left sidebar, click the Provisioning Profiles > All link
  • If you've not distributed apps to the app store previously you'll probably have only an iOS Development profile
  • Click + to add a new profile
  • Select Distribution > App Store for the type of profile:

  • Select the App ID of your previously registered app from the dropdown:

  • Select the iOS Distribution certificate created earlier in Xcode:

  • Name the profile (e.g MyApp Distribution Profile):

  • After clicking Continue your distribution profile will be generated:

  • Click the Download button to download the profile and then double-click it. XCode will launch and install the profile. Goto Xcode Preferences > Accounts and you'll see that you have a new Distribution Profile:


Build for Release and Upload (Xcode)

  • First, in your app's Target settings, under Build Settings > Code Signing > Code Signing Identity set the Release configuration to iOS Distribution. Also, make sure the Provisioning Profile is set to Automatic:

  • In Xcode make sure that Generic iOS Device is selected as the destination device:

  • Select Product > Archive. If the build is successful the Archive Organizer will open:

  • Click Validate. You are prompted for the provisioning profile with which to sign the archive:

  • Choose your Development Team account. You are then presented with a summary of what will be validated:

  • Click Validate. If all goes well you should see:

  • Click Done. You can now upload the archive to iTunes Connect by clicking Upload to App Store...:

  • Again, you're prompted to select your Development Team account (click Choose), and then a summary is displayed. Click Upload:


Complete the submission (iTunes Connect)

  • To complete the submission process, go to iTunes Connect, select My Apps, then select your app
  • Look under the Activity tab and you should see that your build has arrived and is being automatically "processed". Don't worry, that does NOT mean it's been submitted to the App Store yet!

  • When automated processing of the build is complete, if you goto to the App Store tab, 1.0 Prepare for Submission section, you'll see a + is available next to Build:

  • If you click the + you'll be able to select and add the newly uploaded build:

  • Now Save the page. This allows you to return to completing the submission process later
  • Set your app's Pricing and Availability, then save your changes:

  • Select 1.0 Prepare for Submission
  • Add screenshots for your app (4.7", 5.5", 4" and 3.5" device sizes)
  • Add a description for the app, along with keywords, and support and marketing URLs
  • Add General App Information, including the app icon (1024 x 1024 png/jpg), copyright info, etc.
  • When ready, click the Submit to App Store button!