Inspiration for this post
We had a lot of confusion about app submission and approval process of Apple. The best documentation for process is on Apple’s own developer resources but still it doesn’t explain what can go wrong. Something like this you can only learn from experience and hence we decided to share our experience of approval process.
29th November 2011 sometime
App ID was setup for BLAZ3D game in iTunesConnect. Put description of app as BLAZ3D RACING and enabled GameCenter. Created all Gamecenter achievements.
13th December 2011 (5 AM SGT)
Created Distribution Mobile Provisioning Profile for AppStore. No Ad-hoc or Developer.
Tried uploading app using App Uploader application. Got error that uploaded content didn’t contain _CodeResource directory etc.
Realised from forums that we have to send appname.app.zip instead of appname.ipa file.
Tried upload again and App Loader rejected without uploading telling us that signature was invalid for Distribution.
Realised it was still going under Developer certificate even though we had used Distribution. Went back to Marmalade and selected Sign for Distribution and gave it distribution profile. Removed other certificates just to be sure that it doesn’t sign with Developer again. Checked if app is signed with App Store Distribution profile using codesign -dvvvvvv appname.
13th December 2011 (6:15 AM SGT)
Finally Uploaded our binary of 55MB. Status was updated to [highlight type=”two”]Upload Received[/highlight]. Shook hands and gave hugs and went to bed next minute. Some of us had been up for over 50 hours to finish game.
13th December 2011 (6:00 PM SGT)
Woke up after almost 12 hours of satisfying/happy sleep to checked emails.
WTF!!! Binary got rejected after a few minutes of our upload because of issue in certificate entitlements. If we had bothered to wait for a few more minutes we would not have wasted 12 hours to see that binary was rejected.
Checked some forums but nothing seemed wrong with our app. Icons and file size and os type etc were all good. Our app supports both iPad and iPhone.
Suddenly we realised that we had been ignoring a warning on Marmalade Deploy Tool about ‘aps-environment‘ not being in provision profile.
Recompiled app and we saw same warning again. We were not using any push notification code so we didn’t think it was necessary to have ‘aps-environment’ in provisioning profile but it appears that marmalade somewhere in its own code uses the API. This we knew from our experience with OpenFeint extension we built for Marmalade that also requires Push Notification.
Went back to AppID and configured SSL certificate for Push Notification for Distribution.
To be sure that provision profile gets updated with this, clicked on Modify in Provisioning portal for our provision profile and then re-saved it without making changes. After that downloaded the profile and used it to sign app.
13th December 8:20 PM SGT (4:20 AM PST)
uploaded app again and went out to dinner leaving the upload running.
13th December 9:01 PM SGT (5:01 AM PST)
received email with status of app as [highlight type=”two”]Waiting for Review[/highlight]. Knew too well not to celebrate pre-maturely.
14th December 12:10 AM SGT (8:10 AM PST)
after almost 24 hours of our planned submission we realised that we were using Marmalade’s old free licence which was about to expire in 10 days. Marmalade used to have free licence that allowed apps to be built for iPhone only and showed now splash screen. We were not sure to take the risk and re-signed our app using Standard Licence.
14th December 1:30 AM SGT (09:00 AM PST)
The status was still [highlight type=”two”]Waiting for Review[/highlight] so we rejected binary in iTunesConnect. App Status email came with [highlight type=”two”]Waiting for Upload[/highlight] status. We re-uploaded the new binary.
14th December 2:00 AM SGT (09:00 AM PST)
App status changed from [highlight type=”two”]Upload Received[/highlight] to [highlight type=”two”]Waiting for Review[/highlight] within a few minutes of upload completion.
16th December 12:11 PM SGT (15th December, 8:11 AM PST)
received email that app status was [highlight type=”two”]In Review[/highlight].
16th December 12:32 PM SGT (15th December, 8:32 AM PST)
Received email with title [highlight type=”two”]App Submission Feedback[/highlight] explaining meta data issue in app. Fortunately Apple allows to change meta data without re-uploading the binary. The App resolution center notified that our app description only had 2 words BLAZ3D RACING which was not descriptive enough. We realised that we didn’t update the description since we set the App on iTunesConnect on 29th November 2011.
16th December 01:00 PM SGT (9 AM PST)
Quickly updated the description with more marketing information and then resubmitted app (without uploading binary).
16th December 5:00 PM SGT (1 PM PST)
Received email that app was [highlight type=”two”]In Review[/highlight]. We knew from experience that it should be approved/rejected in a few minutes. We were wrong here.
17th December 12:08 AM SGT (8 PM PST)
After a few hours of fixing of meta data. Received email that app was [highlight type=”two”]Being processed for AppStore[/highlight]. This meant that app was approved.
All in all the Apple approval process was not that bad. Our own mistakes caused us extra hassle. Forums and blogs complain a lot about Apple approval process but it seems Apple has been improving things all the time. Marmalade documentation also explains steps to follow to prepare your application for submission to Apple which is also a good help.