It sounds harsh, but if you’ve just begun with publishing to the App Store you probably know what I mean. I am almost convinced that Apple has made publishing to the App Store such a complicated process because they want this process to act as a filter. If you don’t want to go insane while trying to figure out all the pitfalls involved in publishing your mobile app to the Apple Store give this post a read.
If you’ve already published your mobile apps to the Google Play store, there’s really no comparison, that process is dead easy compared with the hoops you will have to jump through when you want to publish your app to the App Store. I wrote an article about the process of developing and publishing mobile apps and towards the end I describe the steps for publishing to Google Play Store in about 2 paragraphs. For publishing to the App Store, it took 6 paragraphs only for the preparation part, and then I just decided to add a 13 mins long video with the extra steps and even after that you are not totally complete, as I were to find out on my own.
In this article you will find:
- The DON’Ts of publishing to the App Store
- How long does publishing to the Apple App Store take in total?
- Apple App Store – the review process
I will start with a few DON’Ts just to make sure that you avoid going through what I went through.
Don’t generate your certificate requests with openssl
I was naive enough to take the first step for signing and publishing my app to the App Store by thinking I can generate the certificate request using openssl. Well, it all seemed to work, since I was able to upload the certificate request to the developers member center on the Apple site, and a certificate was generated for me. I even downloaded and installed the certificate, but somehow, something was not properly working, since even though building of the app was working the app was not validating for being uploaded to the App Store. The error message I got was:
No matching provisioning profiles found
The solution was to use the certificate assistant (see the video of the end of my post about the process of developing and publishing mobile apps)
Don’t ask about the entitlements file
Perhaps you got here searching the error message:
Entitlements file do not match those specified in your provisioning profile.(0xE8008016)
You want to know what the entitlements file is? What did I just say: “Don’t ask about the entitlements file”, come on, pay attention. You only need to know that in your Xcode project settings > Build settings > Code signing entitlements there should be no value.
Don’t use a beta Xcode version
I’m not aware of ways to build, prepare and upload mobile apps to the App Store other than through Xcode, so be aware that you cannot publish using a beta version. You can do all the steps: build, verify and even upload to the App Store, but when you will want to submit your app for review it will not be accepted by the system. The error message will look like this:
Apps and app updates submitted to the App Store must be built with Xcode 5.1.1 or later, and iOS 7 SDK
Don’t know about you, but I find this at least odd. Why the heck does it allow you to do everything in beta, including uploading to the App Store, is totally beyond me. By the way, uploading your app with the beta version means that you will have a “prerelease” version in the App Store that you cannot publish. You can’t submit it for review either, and ATTENTION you can not delete it from the App Store since only reviewed versions can be deleted (or rejected). Wow! I think that’s insane. So, I had version 0.0.1 uploaded via the Xcode beta version. I can’t remove it, and ATTENTION I can’t upload another version 0.0.1 to replace the old one, so basically I had to re-install a non-beta version of Xcode and had to artificially increase the version number to 0.0.2 – insane!
Don’t upload a version that is not ready for use
Once you upload a build of your app with a certain version number, let’s say that you forgot to set the right icon for the app. Making the change and uploading again is not an option since you will receive a message like this:
Redundant Binary Upload. There already exists a binary upload with build version ‘x.x.x’ for …
That’s because the App Store will only allow you to have one build with a certain version number at a time, which makes total sense. Now, for the insane part, you might think that you can just delete the version without the icon and re-upload the one with the icon, since you don’t want to increase the version just for that, but you would be wrong. You cannot just delete the version uploaded. It first has to be passed through the review process (WHY, I really don’t know?!?!? ). Only after that you will be able to reject the build.
And now for the even more insane part. Remember the previous DON’T (don’t use an Xcode beta version). Well, the versions already uploaded using Xcode beta cannot be submitted for review, therefore cannot be reviewed, therefore cannot be rejected/delete so they will be there forever and ever till the end of time and of course, the version numbers used cannot be used anymore (that’s why my first app ever published to the App Store is version 0.0.5, though in fact it’s the first version)
So, the bottom line you need to check, double check and triple check everything before uploading – that is if you like things to be clean and neat and if you would like not to have your version numbering messed up.
Don’t mention Android, Windows or any other mobile platform or market place for mobile apps
If you put in your app’s descriptions Android, Windows or any other mobile platform or market place you app will be rejected.
I’m writing this because I would have loved to have this information the first time I published to the App Store, as it’s always nice what to expect time wise – this way I would not have looked like a goof to the client that asked the question: “When will the app be available in the App Store?”
Just to sum up, here’s a list of steps I went through and an approximation for the time it took (this has nothing to do with the time it took to develop the app):
- Enrolling the Apple developers program requires a DUNS number of the company applying – that took 2 days to get a hold of and to properly get into the system
- Payment of the enrollment fee of 99$ took 1 day for me (I thought it would go through immediately, but it didn’t)
- Downloading and installing Xcode (twice – the beta and the non-beta version) took 1 day
- Properly setting up the distribution certificate, developer profile, uploading to the App store, etc. took 1 day
- Having the app reviewed by the App Store staff to actually having it available in the App Store took 6 to 15 days
So, publishing to the App Store took approximately 11 days for me and I almost did not avoid insanity (ha!).
Here’s a list of review statuses that an app can go trough while in the publishing process.
|Prepare for Submission||You’ve created an iTunes Connect record for the app, but you aren’t ready to submit the app for review. It’s likely that you’re still configuring metadata, screenshots, app preview, pricing, In-App Purchase, Game Center, the iAd App Network settings, and so forth.||X|
|Waiting For Review||You’ve submitted a new app or updated version and it’s been received by Apple, but Apple hasn’t started reviewing the app.While your app is waiting for review, you can:||X|
|In Review||Apple is reviewing your app. Because every app submitted is different, there’s no set review time.You can remove your binary from the review queue by rejecting the binary. See Removing a Build from Review.|
|Pending Contract||Your app is reviewed and ready for sale but your contracts aren’t yet in effect.Check the progress of your contracts in the Agreements, Tax & Banking section. See Viewing Contracts and Contract Status.|
|Waiting For Export Compliance||Your app is reviewed and ready for sale, but your CCATS file is in review with Export Compliance.||X|
|Pending Developer Release||Your app version has been approved by Apple and is waiting on you to release it.Release the version to the store when you’re ready. See Specifying When App Versions Are Released.|
|Processing for App Store||Your binary is being processed and will be ready for sale within 24 hours.|
|Pending Apple Release||Apple is holding your app version until the corresponding Apple iOS or OS version is released to the public.If you think an app should be released on existing iOS or OS versions, review the deployment target set in your app binary. If you rebuild your app binary with a different deployment target, reject the binary for this version and submit the new version.|
|Ready for Sale||Apple has approved the app version and posted it to the store.Changes available in this status are:|
|Rejected||Apple rejected the binary. iTunes Connect users with an Admin or Technical role are notified with what caused the rejection.See Viewing Resolution Center Communications.||X|
|Metadata Rejected||Metadata items other than your binary haven’t passed review. See Viewing Resolution Center Communications.To resolve the issue, edit the metadata in iTunes Connect. When you’ve resolved the issue, submit the app for review again.||X|
|Removed From Sale||Your app has been removed from the store.If your app is at risk of being removed from the store, Apple will contact you to try to resolve the issues before removing your app.|
|Developer Rejected||You’ve rejected the binary from the review process, removing it from the review queue.When you’re ready, resubmit your binary or submit a new binary. See Removing a Build from Review.||X|
|Developer Removed From Sale||You’ve removed the app from the store. See To put your app back on sale.|
|Invalid Binary||Apple received your binary, but it didn’t meet all the upload requirements.Resolve any issues in the binary. On Versions, remove the build, select a new one, and save.||X|
And here is an example from the Apple support site showing a sample for the status history for an app submitted for publishing in the App Store. What is interesting to note is that first of all I would say it’s an awful lots of statuses that the apps get through before being published. Also, getting from Waiting For Review to In Review took 2 days, it took another 2 days for the review itself to be performed and then another day for the app to be available in the App Store.
So, I’m guessing that Apple’s optimistic estimation for the process is around 5 days.
And, as a reality check, here’s the history for an app that I published. It took in total 21 days (I spent 5 days trying to build the app and create the description, then I submitted it and took another 16 days to get it published). It was actually rejected once because I mentioned the word “Android” in the description.