How to Submit An App to Apple: From No Account to App Store – Part 1
Learn how to submit an app to Apple in this two-part series. This tutorial documents every step of becoming an Apple iOS developer – from literally no account, to published on the App Store!
You’ll learn how to sign up for Apple’s iOS Developer Program, how to generate the various certificates needed, how to configure your app, and how to submit an app to the App Store for approval.
To create this tutorial, I created a completely new App Store account and submitted a new app to the App Store, keeping careful note of each step along the way.
This tutorial will walk through the process to submit an app called Drop Charge, which comes from 2D iOS & tvOS Games by Tutorials. The app has already been approved and can be downloaded for free from the App Store here. You should use your own app as you follow along.
For this tutorial, you will need US$99 (or the equivalent fee applicable in your country), a valid credit card, and a browser. This may go without saying, but to develop apps, you’ll need a Mac computer, with macOS installed. Lastly, you’ll want to have at least one real iDevice to test your app before submitting it to the App Store.
Finally, you will need Xcode, Apple’s development software. You can download Xcode from the Mac App store now or wait until it’s covered later in the tutorial.
It will help to approach this tutorial with some patience and perspective. Becoming a registered developer is a lengthy process and is sometimes repetitive. Just remember: in the end you will be able to submit an app (or multiple apps) to the App Store for potential fortune and glory!
The first step on the path to the App Store is to register as an Apple developer. Becoming an Apple developer is free, but this won’t enable you to submit an app to the App Store — to do that you must pay the aforementioned US$99 fee.
You may already have a developer account with Apple. If so, feel free to skip this section.
If you don’t yet have an Apple developer account, go to the Apple Developer Site and in the upper right click the Account link:
On the following page, you can choose to create a new Apple ID or use an existing one. If you want, you can save time and use the Apple ID you already use for your iTunes purchases. Keep in mind that it may be better to have two different IDs to keep your personal and professional lives separate.
So, click Create Apple ID:
Fill in your email, password and security information. Use an email address that you check often because Apple sends frequent updates on the program and on the status of apps you’ve submitted for approval.
Scroll down and complete the remaining security questions and the captcha prompt, then click Continue:
Check the email account you specified when registering. You should receive an email just like this:
The next page will prompt you to enter the code emailed to you. Enter the code and click Continue:
You now have a developer account Apple ID. Great work! :] Log in to the developer site using your new ID:
The next page is the mandatory legal agreement. As always, it’s a good idea to consult with your lawyer before signing this and future agreements mentioned in this tutorial. When you’re ready, click the checkbox. Then click Submit:
Cool, you’re now an Apple developer! You have access to the libraries and tools, but you need to join the paid program to submit apps to the app store.
Joining the Developer Program
Being a registered Apple developer gives you access to a lot of information, but to be able to send apps to the App Store (and to have access to certain associated portals) you need to enroll in Apple’s Developer Program. In the past, there were three programs: iOS, OS X, and Safari. Now there is one program and the same fee (US$99 per year) covers all platforms.
If you followed along with the previous section, you should be in the right place. If you skipped the previous section because you already have an Apple developer account, go to the Developer Member Center, and log in.
Once logged in, click the Join the Apple Developer Program link on the lower center of the page. Then, click Enroll:
The following page describes enrollment as an Individual or as a Company. For this tutorial, you’ll see how to enroll as an individual. If you choose to enroll as a company, the process will be slightly more complicated (you will need to submit documents to prove your involvement with the company).
There are two main benefits to enrolling as a company:
- You’ll be able to invite other people to join your developer account (great for groups of developers working together on the same app).
- The Seller field on the App Store will display your company name (and not your first and last name).
So, if you think one of these may be relevant to you now or in the future, maybe it’s worth dealing with the extra paperwork of signing up as a company, instead of as an individual.
Once you’ve made your decision, click Start Your Enrolment:
The sebsequent page asks if you want to enroll as an individual, as a company, or as a government organization. For the purposes of this tutorial, select Individual / Sole Proprietor / Single Person Business, and click Continue:
Enter your billing/business information to verify your identity. Apple will attempt to confirm this information with your credit card company, so make sure you enter it correctly. Fill in the remaining fields and at the bottom you’ll see another license agreement. When you’re ready, check the box and click Continue:
Review your information and when you’re ready to submit, click Continue:
Now you will be prompted with the cost and summary for the purchase. You have the option for automatic renewal every year, which saves having to remember to renew and prevents any chance that your apps become unavailable (apps will be removed from the store once the account is no longer active).
Check Automatic Renewal if you want this option, then click Purchase:
You’ll now have to log in again using your newly created Apple ID.
Note: The following steps only apply to countries with online Apple Stores. For countries without online Apple Stores, the process will be slightly different, requiring you to fax your credit card information to Apple. If you’re in one of those countries, follow Apple’s instructions and skip to the next section.
Still here? Great. Fill out the payment screen. Verify your billing information for the purchase. You will be asked to agree to the Terms & Conditions. Once you’re ready, check the box and click Continue. Finally, confirm your intent to purchase the membership:
You will then be greeted by a thank you screen. Congrats!
First Steps On Your New Account
After submitting and paying for your iOS Developer registration, you’ll need to wait for Apple to process your order. If you had to fax your information to Apple because you’re in a country without an online Apple Store, you’ll need a little more patience. In either case, eventually you’ll get an email from Apple like this one:
At the same time, you should receive an email from iTunes Connect.
At this point you should download Xcode by proceeding to the Apple App Store using the App Store icon on your application dock. Apple places the latest non-beta release in the App Store. Search for Xcode or click here. While you will only be using Xcode very briefly in this tutorial, there are many other excellent tutorials on RayWenderlich.com to teach you how to use it!
Now go to the Developer Center and sign in. After providing your credentials, you’ll finally be in!
The Developer Center has a LOT of information. There are programming guides, downloadable code, documentation, videos, the very helpful developer forum and a support center.
Spend some time exploring to familiarize yourself with what’s available. Be aware that some of this information may be confidential, especially if it involves beta versions of any SDKs or Tools.
In this tutorial, you’re going to focus on two areas that you’ll use a lot when developing your apps: the Certificates, IDs & Profiles area and iTunes Connect.
Here’s a brief introduction to each of them.
Certificates, IDs & Profiles
As you may already know, a non-jailbroken iOS device is only able to run apps approved by Apple and installed through the App Store.
Apple achieves this by requiring that every app run by iOS has a signed Apple Certificate. Apps installed from the App Store come bundled with a certificate, which the system verifies before it allows the app to run. If there’s no signature or if the signature is invalid, the app won’t run.
As a developer, you need to be able to run your apps on your own devices on a regular basis as you’re developing them. In order to do this, you need a way to create and sign your own certificates.
That’s where the Certificates, IDs & Profiles area comes in. This section allows you to generate what Apple calls “profiles”. Profiles, sometimes called “code signing identities,” are files generated by the Developer Center that allow Xcode to sign your apps in a way that allows iOS on your devices to identify them as valid.
There are two types of profiles:
- Development profiles. These are tied to specific devices, so the app can only run on those.
- Distribution profiles. These are used to sign your app before you submit it to Apple for approval. Although they contain no device-specific information, you can’t use them to install apps on any device yourself because Apple still has to sign the app after the approval process.
The Certificates, IDs & Profiles area can also generate push certificates in case your app wants to send push notifications.
iTunes Connect is the portal you’ll use to submit an app. This is where you’ll register a new app, enter the app’s description and screenshots, choose the price, and configure game center and in-app purchases.
This is also the portal you’ll use to agree to new contracts, set your financial data (so you can bank that profit) and check your sales.
You’ll spend the rest of part one working in the Certificates, IDs & Profiles area. In Part Two of this tutorial, you’ll look at iTunes Connect.
Certificates, IDs and Profiles
Now, you’re going to use the Certificates, IDs and Profiles area to set up the information you need in order to deploy your app to your device (and later, the App Store).
Note that there is a simpler way to do this in Xcode called Automatic Device Provisioning, which you will cover in Part Two. But for now, you’re going to go through the process step-by-step. You’ll understand how things work better this way, and it’s very useful to know when submitting to the App Store.
If you still have your Developer Center page in front of you (if not, log in again), simply click the Certificates, IDs & Profiles link on the left side or click on the gear icon in the middle of the page:
There are many things you’ll need to do from this area. Some of them you’ll only have to do once, such as generating your certificates and registering your devices. Others you’ll have to repeat for every app you make, such as generating development and distribution profiles.
First you’ll need to generate two certificates: one for your development profiles, and another for your distribution profiles. As the text on the page explains, you can request a certificate either via Xcode or manually. Since it’s really useful for you to understand the manual process, in this tutorial you’ll be uploading a Certificate Signing Request (or CSR) from your Mac.
Make sure the drop down in the upper left says iOS, tvOS, watchOS, then click on the + in the upper right:
On the next page, select iOS App Development as the certificate type and click Continue at the bottom:
The portal then shows an explanation of how to generate a CSR using Keychain Access. To follow the instructions, you need to open the Keychain Access app on your Mac. If you don’t know where it is, search for it using Spotlight.
Once the program is open, choose Keychain Access\Certificate Assistant\Request a Certificate From a Certificate Authority…:
In the Certificate Assistant window, fill in your email address and name, choose Saved to disk and click Continue:
Save the file somewhere on your Mac. That’s your CSR created, now to generate that certificate.
Go back to the Developer Center in your browser; you should now click Continue.
Click Choose File…, locate the CSR file you just created and select it, then click Continue.
You will now see a screen that says your certificate is ready. Click Download, and double-click the development certificate file to install it in the keychain:
Click Add in the Keychain Access dialog to complete the installation:
Now that you have your certificate for your development profiles, you need to create a certificate for your production or distribution profiles. In your browser, click Add Another. Under Production select App Store and Ad Hoc, and click Continue at the bottom as before:
Go through the same process as before to submit the same certificate signing request you used for your development certificate.
When it’s ready, click Download, and double-click the distribution certificate file to install it in the keychain.
Note: The distribution certificate is called ios_distribution.cer, whereas the development certificate you downloaded before is called ios_development.cer.
Note: You may have noticed some text at the bottom of the screens talking about Intermediate Certificates. When you launch Xcode, or if you have already launched Xcode, it will install these automatically for you. Should you ever need to install them for some reason in the future just click the + as if creating a new certificate and scroll down to the link to download the file:
This will download a file called AppleWWDRCA.cer. Double-click this file to install it. It will open Keychain Access again in case you closed it.
Now look in Keychain Access and you will see your two installed certificates as follows:
Note: If you do not see the message This certificate is valid with a green check-mark, then you have either not launched Xcode yet, or you need to install the Intermediate Certificates, as described above. The easiest fix is to launch Xcode and let it update the intermediate certificate for you.
You can now close Keychain Access.
The next step is to register your devices. In your browser on the left-side menu, click Devices\All and then, on the right, +:
You need to get the UDID of the device(s) you want to use to run your apps. There are many ways to get a device’s UDID: there are free apps available that will do it for you, or you can use Xcode’s organizer. Here, you’ll get the UDID using iTunes.
Open iTunes and plug the device into your computer. Select the device from the menu bar under the player controls. iTunes will display your device name, capacity, version and serial number. Click on the serial number and it will change to your device’s UDID:
Now simply right-click on the number and select Copy to copy the UDID to your clipboard.
Go back to your browser, enter a device name (which can be anything you want) and paste the UDID into the appropriate field. When you’re done, click Continue
You will now be prompted to confirm the registration. Click Register.
Your device is now registered, and will appear in your list of devices:
You can come back later to register additional devices, belonging to friends and beta testers.
Note: Apple allows you to register up to 100 devices of each type (iPhones, iPads, AppleTVs, etc.) per year to your account. If you register a device and later remove it, it still counts towards your total for the year. At the end of the year, when you renew your membership, you’ll get the chance to decide which registered devices to carry over to the next membership year and which to remove (making room for new devices). At any given moment, you can’t have more than 100 devices of each type.
Creating App IDs
Now that your device is registered, you need to create an App ID. Every app you build will need its own App ID. On the side menu, click Identifiers\App IDs:
You’ll see a brief explanation of the App ID concept. In a nutshell, an App ID is a combination of a 10-character “seed” prefix generated by Apple, and a suffix created by you, defined as a Bundle ID search string. Together they create a unique identifier for your app.
Here are some important things to know about App IDs:
- If you want to share keychain information between your apps, you can elect to have all of your apps share the same seed prefix. For example, say you have a suite of apps that all make use of the same website via a login. If the apps share the same seed prefix, and one app saves the user’s login information to the iOS keychain, any other app in the suite can get this login information from the keychain.
- You can create two different types of App ID: an Explicit App ID, or a Wildcard App ID. Explicit App IDs must be used when you wish to incorporate services such as in-app purchases or iCloud. Wildcard App IDs should be used when you want to use the same App ID for multiple apps.
- In an Explicit App ID, the Bundle ID search string has to be unique for each of your apps. It will be used by Apple’s push notifications service, for in-app purchases and for other services such as iCloud storage.
- Apple recommends that you use “a reverse-domain name style string” for the Bundle ID. For an Explicit App ID, the suggested format is “com.domainname.appname”; for a Wildcard App ID, the suggested format is “com.domainname.*”.
- Remember, if you use a Wildcard App ID, you won’t be able to use any of the neat services normally available, such as push notifications or in-app purchases. You might not plan to use these services now, but if you change your mind, you won’t be able to change your App ID without creating a new app.
Now that you know all about App IDs, it’s time to create one. On the right side of the screen click +.
Fill out the description (usually just your app’s name). The seed ID will usually be your Team ID. Now, make sure Explicit App ID is selected, and enter the Bundle ID – remember to use a reverse-domain name style string for this, including the name of the app at the end. Click Continue when done:
You will be prompted to confirm your values, click Register at the bottom. Then you will see a Registration Complete message.
You are now ready to create the provisioning profiles.
On the side menu, click Provisioning Profiles\All:
You’ll see a brief explanation describing getting started with iOS provisioning profiles. A provisioning profile brings together a certificate, an App ID and device identifiers. When you get back to Xcode (you’re almost there), you’ll use the provisioning profile you created to bring everything together.
You use Development provisioning profiles to build and install versions of your app during your development process. You use Distribution provisioning profiles when you submit your apps to the App Store.
On the right side of the screen click on the +.
Choose iOS App Development, then click Continue:
The next screen asks you to select an App ID for this new profile. Choose the one you just created and click Continue:
The following screen asks you to select the certificates for the profile. If you have multiple members on a team, they can be selected here. Select your certificate and click Continue:
The next screen asks which registered devices this profile should include. Select the relevant device(s) and click Continue:
Finally, enter a name for this profile. You will use the name you specify to identify the profile among other profiles, so make it as descriptive as possible. Click Continue:
The final page shows your generated profile and allows you to download it. Go ahead and click Download.
Since you are already here, go ahead and generate the distribution profile. You won’t actually need this profile until you’re ready to submit the app for approval, but since you’re here, it’s worth doing now. Click Add Another at the bottom:
Under Distribution, select App Store and click Continue:
The next steps are the same as for the development profile. Follow the screens along, name the distribution profile something descriptive and unique, and download it as you did the development profile.
Now find the files you just downloaded on your computer, and double-click each of them in turn, causing Xcode to launch. Verify the profiles are there by opening a project or starting a new one for this test. Click on the Project in the left pane. Select General and make sure the Bundle Identifier is the same as the App ID you created earlier (otherwise, the provisioning profile won’t match).
Select Build Settings, select All, search for “signing” and change the value for Code Signing Style to Manual. Then, click the word None next to the entry Provisioning Profile. Your profiles will be listed:
Run the App on a Physical Device
Finish the first part of the tutorial by actually running your app on a physical device. Change the value of Code Signing Identity from “iOS Developer” to “iPhone Developer: XXX” as it appears in the drop-down menu. Then, go back to General and make sure that the value of Deployment Target is lower than, or equal to, the iOS version currently installed on your test device. Finally, connect your device to your computer and select it from the drop down menu on the top left.
When you’re ready, just click the Play button and wait. This may take a while on the first run.
You have just run your app on a real device. Isn’t that exciting? Enjoy the moment, and when you’re ready to learn more about what just happened and what the next steps are, keep reading. I’ll wait… :]
Where To Go From Here?
If you followed the whole process outlined above and completed each step in the process, then you’ve taken a huge step towards submitting your first app to the App Store – congrats! Hopefully the process is a bit less intimidating now.
In Part Two of this tutorial series showing how to submit an app, you’ll learn everything you need to know about actually submitting your app to the App Store, while learning more about Xcode’s Automatic Device Provisioning along the way.
For an even more in-depth look at publishing your app, check out our book, iOS App Distribution & Best Practices.
If you have any questions or comments about what you’ve done so far, please join in the forum discussion below!