In my last post, I detailed the changes I made to the app itself to prepare it for the App Store and how to submit it’s data to iTunes Connect. The next stage is to submit the app’s binary for review.
Once the app data has been entered at iTunes Connect, a button appears saying “Ready to Upload Binary”. This button must be clicked before an upload can be done. Then you have to go through a page asking if the app includes any cryptographic routines that might be subject to export restrictions. Since Pic-a-POD uses no cryptography at all that was fine. I don’t know what happens next if you do use cryptography. Click “Continue” on the next page and the app status will change to “Waiting For Upload”.
Back to Xcode now and I ran a few final checks: Analyze to look for problems in my code, Profile to look for memory leaks etc. I had done all these checks during development, but I figured that re-checking just before submission was a good idea.
Then I used Archive to build the app for the App Store. In the Organizer’s Archive section, I selected the newly archived app and clicked Share. I saved the package to my desktop and used Terminal to test the install command again. Everything checked out.
Next I went back to Organizer and this time, clicked Validate. This asked for my iTunes Connect login details, confirmed the certificates in use, and presumably ran some preliminary tests. The first time, validation failed as somehow, the version number had disappeared from the plist. I blame my cat who likes walking on my keyboard. I put the version back and this time passed validation.
Then I tried a Submit. I think this does a validation first anyway before uploading anything, so doing Validation separately is probably not necessary. I submitted my app but within about 5 minutes had received a rejection email from iTunes Connect. I was including the Growl framework and it was compiled for PPC not just Intel, so my app was rejected automatically.
I did some research and upgraded to the last version of the Growl framework. That seemed to work, but building gave a code-sign error since the Growl framework had been built using a different certificate to mine. There are ways around this I think, but after several attempts, I decided to leave that for a future version and removed Growl from the app.
During these attempts, at one point I mistakenly uploaded a binary that would not run at all. This was not a problem as iTunes Connect allows you reject a binary yourself. Note that each time you want to do an upload, you have to click the “Ready to Upload Binary” button and confirm that you have not added any cryptography since the last build. Without this, Xcode will not validate or submit your app.
Anyway, I finally got a version submitted that passed the initial tests and that runs correctly but without Growl. Now it is marked as “Waiting For Review”. Since I submitted on a Saturday, I am not expecting to hear back for some days yet. But I feel very satisfied to have got this far.