Skip to main content

 iOS - How to publish an app to the App Store

  • Author:
  • Updated date:

Web Designer, iOS, Android mobile apps developer. From Italy with Love.


Create an App ID

The very first thing to do is to create your own App ID on the Apple developer page - I assume you already have enrolled a paid iOS Development Program that allows you to publish apps on the App Store, but in case you don't have it yet, enroll it right away before keep reading this article, it costs $99/year and you can find info here: Enroll Programs

In order to create your own App ID, get to the developer website and click Certificates, Identifiers & Profiles.


Click on App IDs and the + button on the top-right corner of the window in order to create the Bundle Identifier for your app.

List of App IDs

List of App IDs

The first text field you have to fill is the name of your App. It must be clear, possibly short and with no special characters.

Set your app's name

Set your app's name

Scroll down to the App ID Suffix section. By default, the Explicit App ID option is selected, and that's what you actually need.

To create an explicit App ID, type a unique string in the Bundle ID field. Please note that this string must match the Bundle Identifier of your app, the one you set in the General tab in Xcode.

Set your Bundle ID string

Set your Bundle ID string

Now scroll down to get to the App Services section, where you can select the additional services you want to enable in your app. You can also edit your choices after your App ID has been registered.

By default, Game Center and In-App Purchase options are selected and cannot be unchecked. This is not an issue at all, even if your app doesn't use such services, so just click Continue on the bottom of the page to complete the registration of your App ID.

App Services

App Services

Check your App ID information and then click Register. Please note that you'll see the Game Center and In-App Purchase options disabled, like all the other ones you haven't previously selected. You can enable them later if you want to, it depends by the features you have implemented in your app.

Register your App ID

Register your App ID

Create your app on iTunes Connect

Now you're ready to create your app on iTunes Connect.

Go to, log in with your Apple ID and password and click the My Apps button.

Scroll to Continue
iTunes Connect home page

iTunes Connect home page

Right below the iTunes Connect title, on the top-left corner of the screen, click the + button and select New App, which opens a popup window to create iOS and/or tvOS apps.

Create an App

Create an App

In this section, select the iOS option and fill the following fields:

Name: Type the name of your app, which will be displayed on the App Store. Please note that it can't be longer than 50 characters.

Primary Language: Select the main language of your app from this list. If localized app information isn’t available in an App Store territory, the information from your primary language will be used instead. If you don’t see a supported language that you would like to use, you may contact the Apple customer service.

Bundle ID: Here's where to select the App ID you've previously created, which must match the Bundle Identifier you set in Xcode. It can't be changed after you upload your first build, so be careful while choosing it.

SKU: this is a unique ID for your app and it is not visible on the App Store. You can type anything you want, all lowercase letters. I usually type the name of my app with no spaces, just to make sure I'll make it unique.

When you're done, click the Create button.

App details

App details

App Information section

The first page you get now is the one where you can set all your app's information such as Name, Subtitle, Privacy Policy link, etc. With the App Information tab automatically selected you can edit the following options:

Name: it will show the app name you've previously set in the popup window, but you can still change it if you want.

Privacy Policy URL: this is an optional field, if you have built a privacy policy HTML page on your own server, here's where you should paste the link to it, otherwise just leave it blank.

Subtitle: another optional field, although it's good to type something in it like a summary of your app, It will appear under your app’s name on the App Store for customers with devices running iOS 11 or later. This feature wasn;t available prior to iOS 11.

Under the General Information section, you can check your Bundle ID and select the Primary and Secondary categories, the second one is optional but it's worth setting it as well.

By default, the Licence Agreement option is set to Apple's Standard License Agreement. Just ignore this since it's fine.

Rating: This is not set yet since you will have to edit it later in the Prepare for Submission section.

If you scroll to the bottom of the page you can find the auto-generated link of your app on the App Store - View on App Store. If you click it, it will open a blank page trying to connect to the iTunes Store, of course, your app isn't there yet so you can do right-click on the link and copy it for further use - like a promotional coming soon website, or social network shares to let your connections know that you'll be releasing an app soon.

App information

App information

Pricing and Availability section

Once you're done with the above settings, click Save and switch to Pricing and Availability tab.

Here you'll be able to choose the price tier you want for your app, it goes from FREE to $999.99 in the Price Schedule section. Below this section, you can edit the availability of your app. By default, it's worldwide, but if you click on the Edit link you can select the country(s) you wish your app to be visible.

Volume Purchase Program: There are 3 options you may select in this section:

  1. Available with a volume discount for educational institutions
  2. Available with no discount
  3. Available privately as a custom B2B app

Click on the (?) buttons next to those options to learn what they mean, I won't get too much into these details since the 99% of developers select the first one due to the fact that they publish their apps for FREE.

Bitcode Auto-Recompilation: Ignore this section. Expand it to get its details if you want to.

Pricing & Availability

Pricing & Availability

Prepare for Submission section

In this page, you'll do most of the job about your app, such as uploading screenshots, writing a description, creating keywords, etc. here are the option

App Previews and Screenshots: You are allowed to upload up to 3 app video previews and 5 screenshots in this section. Your screenshots must be in the .jpg or .png format, and in the RGB color space. The video previews must be in the .m4v, .mp4, or .mov format and cannot exceed 500 MB.

You can simply drag your images and videos into the grey section and wait for them to be uploaded to the Apple's server. the great thing about it is that you can make iPhone 5.5" and iPad 12.9" images and the iTunes Connect website will automatically resize your images to fit all the other devices' screen size.

Promotional text: This text box is where you can type something to inform your App Store visitors of any current app features without requiring an updated submission. Please note that your text will show up above the main description of your app on the App Store for users with devices running iOS 11 or later.

Keywords: Insert some keywords in this text field that describe your app. Keywords make App Store search results more accurate. Just remember to separate keywords with a comma, something like photo, pic, social, fun, etc.

Support URL: Type the URL of your or the landing page of your app. This URL will be visible on the App Store.

Marketing URL: If you have a webpage with marketing info about your application, type its link in this field. This URL will be visible on the App Store.

Description: This is the main description field of your app, where you can write about its features and functionality. It will also be used for your Apple Watch app (in case you'll have it).

iMessage App: If you offer an iMessage extension app you have to upload up to 5 screenshots about it in this section.

Apple Watch: If you offer an Apple Watch extension app you have to upload an app icon and up to 5 screenshots about it in this section.

Build: Here you must select the binary you've uploaded via Xcode, as the section says, you can submit builds using Xcode 6 or later, or the Application Loader 3.0 or later. At the present time, I would recommend you to use Xcode 9. We'll see what you have to do to upload a binary to iTunes Connect later.

Prepare for submission - initial info

Prepare for submission - initial info

General App Information section

App Store icon: If you have built your app with Xcode 9 or later, you don't need to upload your 1024x1024px icon image here because the Assets.xcassets folder in Xcode 9 has a spot for such icon too. Please note that your app icon doesn't have to have round corners nor transparent pixels, and must be in .png format.

Version: Type the version number of your app you are in this field. Numbering should follow software versioning conventions.

Rating: Click on Edit and select the level of frequency that best describes your app in the popup window that will show up. The app rating that will display on the App Store is the same across all of your platforms. It is based on the app’s platform with the highest rating. When you're done, click Done.

Copyright: In this box, you have to type the name of the person or entity that owns the exclusive rights to your app, preceded by the year the rights were obtained (for example, "2008 Acme Inc."). Do not provide a URL, just a name, it may be your own company name or just your full name.

Trade Representative Contact Information: This is only for Korean App Store, you can provide additional information that will be displayed with your app on the Korean App Store, so if you're not from Korea do not check this option.

You must still fill all the fields below with your personal or company's information.

Routing App Coverage File: Specify the geographic regions supported by your app. The file must be in the .geojson format and can only contain one multipolygon elements. Anyway, this option is optional and nobody usually fills it, so just ignore it, especially if you're publishing your app Worldwide.

In-App Purchases: If your application is offering In-App Purchases, click on the blue + button and select the IAP products you previously created in the Features/In-App Purchase section (this option will be explained in another tutorial dedicated to iOS IAP).

Game Center: If your app offers Game Center Leaderboards and/or Achievements, enable this option and add your Leaderboards and Achievements by selecting them in the popup window that will appear by clicking the blue + button.

Multiplayer Compatibility: If your app offers multiplayer compatibility between other apps, click the blue + button and elect those apps, otherwise just leave it as it is.

Sign-in information: If your app's users have to sign in using social media or custom Login/Sign Up controllers, you have to provide information for an account that the reviewer can use to test your application. Credentials must be valid and active for the duration of the review.

Contact information: Insert the first name, last name, phone number and email of the person in your organization who should be contacted if the App Review team has any questions or needs additional information.

Notes: This box is where you can type additional information about your app that can help the Apple reviewer during the review process. Include information that may be needed to test your app, such as app-specific settings and features.

Attachment: This is a useful option, you can attach specific app documentation, demo videos, and other items to help prevent delays during the app review process. Make sure you use files with the following extensions: .pdf, .doc, .docx, .rtf, .pages, .xls, .xlsx, .numbers, .zip, .rar, .plist, .crash, .jpg, .png, .mp4, or .avi.

Version release: After your app has been approved, Apple reviewers can release it for you immediately. If you want to release the app yourself, choose a date or manually release it at any point after the approval. Choose one of the 3 options offered in this section.

Prepare for submission - Additional info

Prepare for submission - Additional info

Xcode Archive and upload to the App Store

You're almost done, the last thing you have to do now is to Archive your application with Xcode 9 or later and upload its build to the App Store through the Organizer.

With your app project opened in Xcode, click on Product -> Archive and wait for the software to create an archive of your application.

Archive an app

Archive an app

Once the Organizer window shows up, you just have to click on Upload to App Store and wait for your binary to get successfully submitted to the Apple's servers. You'll get an alert when the upload is done, then close the Organizer and go back to iTunes Connect, the Build section.

Upload an build to iTunes Connect

Upload an build to iTunes Connect

Wait for an email from Apple that will notify you when your binary is ready to be added to the Build section of your app's page on iTunes Connect. Enter such section then, click the blue + button next to Build, select your binary and click Done.

Add your build

Add your build

Select your Build

Select your Build

At this point click on Submit for Review button on the top-right corner of the screen, answer a few final questions and you'll be done with submitting your application to the App Store.

It usually takes up to 3-4 days to a reviewer o approve or reject your app, in case of rejection you'll get a message in the Resolution Center, where you'll be able to reply to the reviewer to discuss issues on your binary (if any, of course).

If you carefully tested your app before submitting it to for review you shouldn't get a rejection, but please note that lately, Apple hired bad reviewers who reject apps for insignificant reasons. In this case, don't get discouraged, just keep pushing ;)

© 2017 cubycode

Related Articles