First of All, this guide is not written explicitly for Headjack users. The process is the same for any other iOS submission. Hopefully, it may benefit the broader development community and give first-timers the confidence to submit their app on the iOS App Store.

image of the iOS App Store,

The iOS App Store an Introduction

Of course, the iOS store doesn’t need any introduction since it formed our general perception of what an “app store” should look like when it was introduced alongside the iPhone 3G. Yes, the original iPhone that launched in 2007 didn’t have an App store, and there was a lot of debate within apple if they actually should open the platform for third-party developers at all. Steve Jobs advocated heavily against opening up the iOS platform within apple at first and pushed towards promoting mobile web apps for third-party developers as a means to get on the iOS platform.

Luckily they did open up the iOS platform for native apps eventually, and it became the blown-out success it is today, heavily contributing to the iPhone’s success in general. It became so successful that it’s been sued for anti-trust claims by companies like Epic and Spotify over the last couple of years, which would like to bypass Apple’s strict install policy and 30% payment cut, bringing us to the next question.

App Store in 2007,

Is it possible to sideload apps to iOS devices?

The short answer is no. The long answer is yes, but only under stringent circumstances. First of all, you need an enterprise account on top of your regular Apple Developer Account. You need to take a more rigorous audit than for a standard Developer Account, and it will cost more than the 99 dollars you already pay for a Developer Account. On top of that, Apple holds the right to revoke this license when they feel their app policies are in any shape or form violated by the developer, rendering all your apps useless.

So the path of lesser resistance is to get your app listed in the regular App Store where your clients and end-user can download your app as they normally would with any other app.

If you want to distribute to the App Store, you must live by Apple’s rules.

The most significant difference between the iOS app store and Google’s Play store is the way your apps are reviewed before they get a store listing. When you publish to the App Store, all your apps go through a very rigorous audit by an employee of Apple, which will check your app on things like stability, functionality, and content. So make sure you read Apple’s app policy well before you start even thinking about app submission, and make sure your app complies with them.

I really can’t stress this enough because, in the past, I have had countless issues with Headjack customers that got their app rejected by the Apple review team. For some reason, they didn’t comply with store regulations, or their app lacked any compelling functionality or content. I don’t want to discourage anybody from putting their app up for submission, but there is always a risk that it will get rejected for no apparent reason. Forewarned is forearmed! So before you start submitting your app (or better, before you even begin building it and are still in the concepting phase ), make sure you are incredibly familiar with Apple Content and App Functionality guidelines.

How Long will an app submission take?

To be honest, the process of getting your app submitted is not that complicated after the first set-up, and you are familiar with the process. Still, it’s just quite a lot to digest for the first time, So Make sure you are not doing this for the first time before an important deadline! Mainly producing the correct artwork and writing excellent copy for your app can take much more than initially anticipated, And the whole process could easily take you a week from start to finish.

Apple App Store Meme,

If you already have everything set up, pushing new submissions can be done in under 30 minutes because you only need to repeat step 7 of this guide.

Let’s start our first Apple app store submission without ever further due!

9 Steps for submitting Your App to the iOS Storefront

Before we can begin, make sure you have set up the following accounts and installed the following tools and programs. App submission can only be done on a Mac; there is no way to do an app submission on a Windows machine since you will need a couple of programs that are OSX specific.

Apple Developer Account

First, make sure you have a valid Apple developer account and comply with the latest license agreements. If you don’t have an Apple developer account, this will set you back 99 dollars each year and take a couple of days to get Apple’s approval.


Make sure you download the latest version of Xcode on the OSX machine you plan on using to submit your app.

Keychain + iCloud

Of course, this is the application on OSX that stores all your passwords associated with a specific iCloud account, but you will also need it to generate some certificates for your store submission. Ensure that the iCloud account is either the same as the one used to create the Apple Developer account or that this account is invited to the developer account and has administrator rights.


The Transponder app is an OSX application used to upload app builds to your developer account after signing; You can download the Transponder here.


Testflight is an iOS app for iPhone and Ipad, which you can use to test builds before they go through the submission process. Testflight can also be used during production to test unreleased app builds with your team or to share early share app builds with clients for final approval before the actual release.

Bundle ID

The Bundle ID is a unique identifier for your app, which you can obtain in Xcode or in the case of a Headjack app by navigating to the following path:

  1. Login to the Headjack CMS
  2. Navigate to Apps>”app name”
  3. Under the app name, you will find the Bundle ID
Bundle ID Headjack App,

Step 1: Prepare and Test

Before submitting your app, make sure it works and is tested on your local devices to avoid going back and forth with the submission team a lot. It’s almost unavoidable to resubmit your app a couple of times to make changes to the app’s content or the app itself. Still, by testing your app in advance, you will keep these changes to a minimum, and it will speed up the process significantly.

So start building a couple of local builds of your app or game and test them on your local iOS devices. In the case of a Headjack app, you first need to follow this guide until step 6 because you need to get a signed App that can be installed on your local iOS device. After that, make sure your video plays well and that all your artwork looks good. Furthermore, make sure you meet all the Content Guidelines dictated by Apple; otherwise, your app or game will unquestionably be declined for approval.

Next to the content guidelines, your app or game also has to meet technical guidelines to guarantee a good user experience. For Headjack apps built with Headjack Cloud, you don’t have to do anything since we ensure full compliance with the latest store requirements, but for an app built in Xcode or games created in Unity or Unreal, make sure you follow these guidelines before submitting.

Step 2: Create an iOS Distribution Certificate

In Steps 2 and 3, we will create a Distribution certificate, the App ID, and the provisioning profile that Apple uses to identify you as the one submitting the app to their platform. This process can be a little overwhelming when you are doing this for the first time, and it sure is; it cost us days before we figured out the process the first time, and it’s actually one of the main reasons I am writing this document in the first place. 

Please make sure to follow these exact steps in the exact same order as described below to save you hours of frustration and headaches.

First, you need a so-called .p12 certificate which needs to be generated in both the keychain app and the Apple developer account. 

Create a CRS file in keychain

Keychain Request Certificate,
  1. Open Keychain access
  2. Choose Keychain Access > Certificate Assistant > Request a Certificate from a Certificate Authority.
  3. Enter an email address associated with the Apple Developer account in the User Email Address field in the Certificate Assistant dialog.
  4. In the Common Name field, enter a name for the key
  5. Leave the CA Email Address field empty.
  6. Choose “Saved to disk”, and click Continue.
Generate Keychain Certificate

Store the CSR file where you can easily find it because you will need it in the next step

Create a unique Distribution Certificate

  1. Log in to your Apple Developer Account
  2. Navigate to Certificates, IDs & Profiles in the left menu bar
  3. Click the + icon to create a new certificate
  4. Click Apple Distribution
  5. Click continue
  6. Upload the CSR you just created and Continue
  7. Download the Certificate

Create the .p12 signing file

  1. Go Back to Keychain
  2. Navigate to my certificates
  3. Drag and Drop the distribution.cer file on it
  4. Right Click on it
  5. Select Export
  6. Give this a name and make sure the .p12 file format is selected.
  7. Set and password for your certificate (don’t lose it because you need it later!)
  8. Export the .p12 certificate

Step 3: Create an App ID, Test devices, Provisioning Profiles

Now, let’s first create an App ID that we will need multiple times down the line to identify your app build.

Create the App ID for your App

  1. Log in to your Apple Developer Account
  2. Navigate to Certificates, IDs & Profiles in the left menu bar
  3. Click “Identifiers”
  4. Click the + icon to create a new identifier
  5. Select App IDs
  6. Select App and continue
  7. Fill in the description and Bundle ID (make sure it’s exactly the same as the bundle ID you retrieved from the Headjack CMS!)
  8. Select capabilities if needed (for Headjack Cloud Build User, you can leave these blank)
  9. Click continue
  10. Click Register
Apple App ID

We need to add some testing devices for your Apple developer Account used in the provisioning profile in the next step.

Obtain The UDID (Device ID code) from your test device

  1. Download test flight to the devices from the App Store
  2. Hook up your device through USB on Mac
  3. Navigate to your device in the finder
  4. Click on the iPhone type under the iPhone’s name
  5. Copy the UDID number

Add this device to your fleet of test devices

  1. Login to your Apple developer Account
  2. Navigate to Certificates, ID’s & Profiles in the left menu bar
  3. Click “devices”
  4. Click the + icon to add a new device.
  5. Add your device with the UDID code
  6. “Click Continue”

Create the correct provisioning profile.

  1. Log in to your Apple Developer Account
  2. Navigate to Certificates, IDs & Profiles in the left menu bar
  3. Click “profiles”
  4. Click the + Icon to create a new provisioning profile
  5. Choose App Store
  6. Click Continue
  7. Select the App ID you created in the previous Step
  8. Select the correct Certificate you created in Step 2
  9. Give your provisioning profile a name
  10. Click “Generate”
  11. Download your Provisioning Profile
Apple Provisioning Profile

Now you need to sign your code in Xcode and compile the app you would like to submit; with these newly created signing credentials, you can read more about his here. For Headjack Cloud Build Users Specifically, please read the following instructions on creating a store build in the Headjack CMS.

Step 4: Create an App In App Store Connect

Now let’s create an App in App Store Connect and assign it to the correct App ID

  1. log in to your Apple Developer Account
  2. Navigate App Store Connect in the left menu bar
  3. Click “Go to App Store Connect”
  4. Click “My apps”
  5. Click on the + icon to create a new App
  6. Give Your app a Name
  7. Select the Language
  8. Select the Bundle ID which you created in the Previous Step
  9. Set an SKU name
  10. Give specific user access to this app or put it to full
  11. You will be prompted to the App Dashboard
Create new App Apple

Step 5: Sign your App

For native developers, this is the time to get your code signed in Xcode; you can read how to do this here and compile your app. If you are a Headjack user, please follow the following steps:

Users that use Headjack Cloud Build

Create a signing file in the Headjack CMS

  1. Navigate to Apps>App Signing
  2. Click + add signing File
  3. Give your singing file a name
  4. Choose Cardboard iOS as the platform
  5. Select Store
  6. Upload your P.12 Certificate
  7. Upload your Provisioning profile
Headjack Upload p12 Certificate

Sign your Cloud Build

  1. Navigate to the app with the correct Bundle ID
  2. Click Build App
  3. Build Target Choose Cardboard iOS
  4. Set Distribution Channel to Store
  5. Select the signing credentials you created in the previous step
  6. Fill in the password of your p.12 distribution certificate you set in step 2
  7. Click Start Build
  8. Wait for the Cloud Build to Finish
  9. Download the .IPA app file from the app or builds page
Headjack Build Config

Users that use Headjack SDK in Unity

For app store distribution, your custom Headjack app always needs to be cloud built to include some proprietary libraries that are not distributed with the Headjack SDK for Unity. You can read how to upload your custom Unity project to Headjack for cloud building here.

Step 6: Upload your Build and run it in Testflight.

Once you have obtained the .IPA file, it’s time to push it to Apple’s online system, test it and get it ready for submission. 

  1. Open transporter on your mac
  2. Drag and drop the .IPA file to it
  3. Wait for the initializing to finish
  4. Click “Deliver”
  5. Wait for the upload to finish.
Upload build with transponder

If you have done everything correctly up until this point and you don’t experience any errors during this upload, the hardest part is behind you.


Now, let’s test this build on our test devices we added earlier

  1. Log in to your Apple Developer Account
  2. Navigate to “App Store Connect” 
  3. Click “My Apps”
  4. Click the App we added earlier
  5. Click Test Flight in the top menu
  6. You should see the build you just uploaded.
My first iOS app

Add test user to this build

  1. Click on Internal Testing in the left menu bar
  2. Click on the + icon next to testers
  3. Select a person from the list that needs to test this build
  4. That person should now receive an e-mail
  5. Click on open in testflight
  6. The testflight should open
  7. Confirm
  8. Install the App
Add Test User Headjack

Voila, you now have your build installed on your test device. You can also invite people outside of your organization by clicking on the build and inviting individual testers by clicking on the + Icon.

Step 7: Start the submission process.

When you and your testers are satisfied with your final app, now it’s time to push your app to Apple’s Submission team for final review. Make sure to upload your definitive store art following these guidelines, and make sure you set 

Now, let’s test this build on our test devices we added earlier

  1. Log in to your Apple Developer Account
  2. Navigate to “App Store Connect” 
  3. Click “My Apps”
  4. Click the App we added earlier
  5. Upload all required Artwork
  6. Fill in All required Information
  7. Set the Build that has final approval 
  8. Write a clear message to your reviewer about the purpose of the application
  9. Under Version-Release, set the correct distribution settings
  10. Hit Submit for Review
Full Submission Headjack

Now fingers crossed, and wait for the apple approval team to approve your app; It could be that the app reviewer needs some more clarification on the use case or other functionality of your app. They usually reply within two business days after the first submission, so keep an eye on your mailbox during these days to speed up the communication.

Step 8: Submission process > Bugfix and Resubmit

Sometimes you need to fix minor bugs and upload new builds. Repeat step 7 with each new build you would like to get reviewed by Apple and write a clear response for the review team on what you changed.

Step 9: Where to find your app and how to share it

Once your app is approved and live in the store, there are two methods of promoting your app and linking to it. 

method 1: download from the app store on a supported Apple device

method 2: share the store URL

Step 10: Update your app.

If you are a Headjack User and are using our video cms or game engine integration, you can update your app content without having to go through the complete update cycle again. 

However, suppose you push significant functionality updates or distribute the update through the App Store. In that case, you always need to repeat step 7 and make sure you set your versions correctly for this new update.