How To Submit Your App To the App Store

In the last tutorial, I showed you how to deploy your app to your iPhone.

This tutorial for submitting your app to the app store builds upon that one and relies on steps performed in that article so if you haven’t set up things like your distribution certificate and App Id, then go back to the aforementioned article and do that first.

Ok! Now that you’ve done those steps you’re actually not that far away from publishing your app into the App Store!

The high level steps in the process are to:

  1. Create a distribution provisioning profile for your app.
  2. Build an archive of your app with that profile.
  3. Create an app listing in iTunes Connect and fill in all of the metadata and screenshots.
  4. Submit your app for certification through Xcode 5.

We’re going to go over all of those steps today.

1. Create a distribution provisioning profile for your app

In the previous article, you created a development provisioning profile. Well, now we’re going to create a distribution provisioning profile!

The difference is that for the development profile, you can specify multiple development certificates so that multiple developers can create a build.

With the iOS distribution provisioning profile, you can only specify one distribution certificate which will be the only signing identity used to code sign your app when you generate the archive (the package you submit to the App Store).

So login to your iOS Developer Provisioning Portal and go to the Distribution Provisioning Profiles section.

Click the Plus icon in the upper right to create a new profile and then choose App Store as the type. Click “Continue”.
Creating an iOS distribution provisioning profile

Select your App ID from the drop down list and click “Continue”.

Selecting an App ID for the distribution profile

On this screen, you should have a distribution certificate available (we requested one together in the last tutorial for deploying your app). Select it and click “Continue”.

Select the distribution certificate for your distribution profile

Finally, name the profile and click Generate.

Generate your distribution provisioning profile

Now you can can download the profile and double click to install it.

Download and install the distribution provisioning profile

2. Build an app archive

Open up your app project in Xcode.

Before we build an archive to submit to iTunes Connect, let’s go through a little checklist to make sure that we’ve got all our “ducks in a row”.

  • Make sure that you comment out all of your NSLog statements or use a setup like this
  • Have you tested your app on an actual device? What happens to your app when a call comes in or when the user exits the app and then re-enters? Does your app perform in 3G or bad network connectivity situations? Test for edge cases like that.
  • If your app supports iOS 6, have you tested your app in the iOS 6 simulator and an iOS6 device?
  • Have you added an app icon and splash image to your app?

These are some of the things I can think of off the top of my head right now. If you think of anymore, let me know in the discussion below and I’ll add it!

iOS Certification Process (App Review)

Once submitted, your app will go through a certification and app store review process to ensure that it doesn’t violate any rules, that it functions well and is not malicious.

The latest app store review guidelines on how Apple reviews your app is located here: App Review Guidelines.

After ensuring that your app follows those guidelines, click the root node of your project in the file navigator to go to the project settings.

Then click the Build Settings tab and scroll down to the Code Signing section.

Xcode 5 build settings set code signing to distribution

Choose the iOS Distribution setting. This is an automatic setting, meaning that it picks the Distribution Signing Identity automatically. If you have multiple distribution signing identities then it may be better to explicitly select the one you want to use.

Now, we want to create a Release build and submit it to the App Store.

Change the deployment target to iOS Device

Change deployment target to iOS Device

Then go up to the Product menu item and select Archive:

Create an app archive

Your app archive will be created and the Xcode Organizer will launch, showing you all the archives that you’ve created in the past.

At this point, we need to switch gears and go into the iTunes Connect portal to set up our App Store listing with all of the information. After that, we’ll go back into the Xcode Organizer and submit the app through Xcode.

3. Create an app listing in iTunes Connect

You’ve seen the iOS Provisioning Portal, but what is Apple iTunes Connect? It’s a dashboard that allows you to manage your apps, view reports of your performance in the App Store, manage your contracts and more. When you enroll in the iPhone developer program, you’ll have access to iTunes Connect as well.

We’re going to click Manage Your Apps.

The iTunes Connect dashboard

On the next screen, click the blue Add New App button.

App Information

Add your app information

Select the bundle ID that corresponds to the app that you want to submit (we created an App ID and bundle id together in the article mentioned in the beginning) and type in an app name.

The SKU Number is just for your own reference or cataloguing. Just like products that you buy in a store have a barcode, this app SKU number is like that and is used for your own purposes to identify your product.

After you’ve filled in the information, click Continue.

App Availability and Pricing

App availability and pricing

After the app is certified, if you want it to be available immediately, you can leave the date set to today. At the point it passes certification (days or a week later), if the availability date has passed already, then the app will be made available in the store (usually about 24 hours after passing certification).

If the availability date hasn’t passed yet when the app passes certification, then you can wait for the date to pass or manually release it into the store through iTunes Connect.

For pricing, if you’re going to be selling your app for a price higher than Free, you’ll have to sign some contracts and add a bank account in order to get paid. It’s not something that we’re going to go through in this article but all that stuff is under “Contracts, Tax, and Banking” in the iTunes Connect dashboard.

The rest of the options are pretty self explanatory so I’ll skip them. You can click the little question mark to get more information on each option.

App Version Information, Metadata, Contact, EULA and Art Assets

This screen is where you’ll fill in the bulk of the information for your app.

It’s extremely helpful to click the little question mark bubble beside each field to get hints about what Apple expects you to fill in for each box.

Version Number : Fill in the same version number as you have in the project info settings of your app.

App Version Settings

Copyright : You can fill in something like “2014 Code With Chris” (substituting your own values for year and name)

Primary Category and Secondary Category : Select the most appropriate categories for your app.

Rating : Answer the questions they ask and the rating for your app will be determined.

Description : This will be the description that’s shown for your app in the iTunes App Store. You want to be descriptive but don’t be deceptive or you won’t pass certification because of misrepresentation. For example, if your app is about Angry Birds, don’t describe what Angry Birds is or people might mistake your app for the actual game.

Keywords : Fill in the keywords that you want your app to show up for. You only have 100 characters so don’t use any spaces (use commas to separate keywords) and try to fill in and fit as many relevant keywords as you can think of for your niche. There are a bunch of App Store keyword research tools out there if you want to go that route too. I haven’t used any before so I can’t comment on them.

Support, Marketing and Privacy Policy URLs : Hopefully, you’ve got a website or somewhere you can direct users to in order to find the aforementioned pieces of information.

Contact Information : If the app reviewer needs to contact you, they’ll reach you with this information.

Reviewer Notes and Demo Account : Make it easy for the reviewer to go through your app! Give them any instructions here and if your app requires a login to use, provide a demo account rather than making them sign up for it.

Uploads : Provide the art assets for your app listing in the App Store. Click the question mark bubbles to find the dimensions required for your assets. Don’t forget that you can use the iOS simulator to generate your screenshots. Launch your app in the simulator and press CMD + S to save a screenshot to your desktop.

Finally, click Save!

It’ll back out to the saved listing and you’ll see near the bottom that your app has a status of “Prepare for upload”.

Prepare for upload status

Click the app icon to go into the details and in the upper right hand corner, you’ll see a blue button that says Ready to Upload Binary. Click that blue button and you’ll be presented with a few questions.

These questions may change but at the time of this writing, they ask if your app incorporates any encryption, third party content and if you’re utilizing the Advertising Identifier.

For encryption, if you didn’t write any code to perform encryption and you didn’t use any of the Objective-C libraries to encrypt data, then select No.

For third party content, if your app displays content that doesn’t belong to you (for example, an app that displays YouTube videos), then select Yes.

For the Advertising Identifier, if you’re not sure what this is, then you probably didn’t use it and you can select No (unless you purchased your source code, in which case you should find out!)

Click Save and you’ll see the status change to Waiting For Upload.

Waiting for upload status

Now we go back into Xcode 5 to perform the last step!

4. Submit your app through Xcode 5

Warning! Did you make sure that your app status to “Waiting for upload”? If not, it the following section won’t work apply to you. Go back a couple of paragraphs and change your app status to “Waiting for upload” first!

Back in Xcode 5, open the Organizer if you closed it from the earlier step (pressing SHIFT+CMD+2 or going through the menu Window->Organizer).

Go to your Archives tab and select the archive that you created earlier for upload.

Then click Distribute (it’ll run through the validation too).

Use your iTunes Connect login to sign in and it’ll look to make sure that you created a matching App Listing.

Then if all goes well with the validation, it’ll proceed to upload the binary for certification!

After uploading the binary, if you go back to you iTunes Connect account, you’ll see the status of your app is now Waiting for Review.

In my personal experience, it’s taken a few days to a week to get the app into the review process. You don’t need to check the status everyday because you’ll receive an email when the status changes.

Hopefully, you pass on the first try; if not, don’t worry, it’s not uncommon to fail the first try especially if your app is complex. They’ll tell you what’s wrong with it and then you can fix the issue, increment the version number and re-upload a binary and wait for another review!


Passing certification and publishing your creation into the App Store is very gratifying. I can almost guarantee that you’ll be checking your sales/download numbers several times a day when it’s first published in the App Store 🙂

Subsequent updates to your app should be easier to pass certification, especially if it’s small changes.

I hope you’ve enjoyed this tutorial and please share it with your friends and peer using the social buttons below!