As you might know, whenever you release an app or update on the App Store, you have to first submit it to Apple. Apple then review the app to check that it passes their criteria – this usually takes about a week. If you’re lucky your app gets approved and you can release it. Or if your app gets rejected, you have to fix the problem and then go through the whole cycle again.
Of the seven releases we’ve made on the App Store, four of them were rejected the first time. Not exactly a great success rate! :)
While I’m waiting for Apple to review my latest submission (to add iPhone 5 support to both versions of iZOS), I thought I’d write up what it was that got us rejected each time. If you’re a developer on iOS, you might find this useful so you know what to avoid! And if you’re not, it might be an amusing behind-the-scenes look at the ups and downs that go on at Binary Space :)
ZOS version 1.0
After about 8 months of development, we submitted version 1.0 of ZOS to Apple on the 17th of March 2012.
On the 24th of March, we were told it had been rejected. This is what the rejection message said:
We found that your app icons, screenshots, and/or Application Description includes content that is not appropriate for all age groups, as required by the App Store Review Guidelines.
This content must meet the requirements for a 4+ rating (must not contain objectionable material) since this content is visible on the App Store by all users, even when purchasing is restricted by the app’s rating.
It would be appropriate to revise or remove the following content: App icon
This is the icon we had submitted:
We had rated our app 9+ due to the animated violence, but it turns out that the app icon needs to be suitable for viewing by 4+ users, as kids can see the app icons even if the rating blocks them from installing the app. Apparently the bloody handprint was too much. Item 3.6 of the App Store Review Guidelines says:
3.6 – Apps with App icons and screenshots that do not adhere to the 4+ age rating will be rejected
A quick search for ‘zombie’ and ‘blood’ on the App Store revealed a number of apps with gory icons – many far worse than our handprint. We replied to Apple with links to all of those other games. We received a response along the lines of “just because we’ve approved other apps which break the guidelines, doesn’t mean we should approve yours”.
In the end Jay and I decided to change the handprint to green and try again. It made no sense, but green blood worked for Carmageddon, so we thought we’d give it a try. We were keen to just get the app released, and didn’t want to delay things any further.
Besides the icon, the app was also rejected because we’d written the following in our App Store description:
Zombie Outbreak Simulator is a sandbox app where you customize your own zombie outbreak, on Google Maps (R).
The word ‘sandbox’ caused the app review team to query whether it was a complete app, or just a test or demo version. Item 2.9 of the App Store Review Guidelines doesn’t allow test apps:
2.9 – Apps that are “beta”, “demo”, “trial”, or “test” versions will be rejected
To clarify this, I just put a message in the Review Notes section of the app to say that by ‘sandbox’ we meant that players could customize the outbreak parameters, and not that it was a test app.
We resubmitted the app with the new icon on the 28th of March, and on the 4th of April it was finally approved by Apple! We spent a bit of time sending promo codes to reviewers and getting organised for the release, and then released the app on the 11th of April!
ZOS version 1.1
When developing iZOS we thought we’d start with the simplest thing possible, see how it went, and then go from there. This meant the original release only supported a single map in the Netherlands (much like the original web version of Zombie Outbreak Simulator released in 2009, which only had a single map of Washington DC).
One of the common complaints from players of iZOS was that there was only one location. So almost immediately after the initial release we started working on an update to include more maps. We considered integrating it with the maps from the web version of C3O – so that iOS players could play any of the published maps from C3O. But in the end we decided it would be easier if we started by just including a selection of 10 maps. If more maps turned out to continue to be a popular request, we could always extend it further in the future.
We submitted the update to Apple on the 25th of April 2012.
A few days later we noticed that our app sales had suddenly doubled. After some investigating, we realized that we’d been featured by Apple in their Staff Favorites! We were featured in the US, Canada, Brazil, Mexico, Spain and 14 other countries. Thanks Apple Staff! :)
When we noticed the feature we figured it would be great if the extra maps could be in there for everyone to see while we were being featured. However we expected that it would take about a week for our app to be reviewed as normal, by which time we’d probably no longer be featured. So we put in a request for an expedited review, saying something along the lines of “thanks heaps for the feature, it would be great if we could have our new version up there, please!”. Apple granted our request (thanks Apple!), and our new version went live on the 30th of April, a couple of days before the feature period ended.
ZOS Free version 1.0
After we released the maps update to iZOS, we decided we’d try creating a free version of iZOS with only one map and limited infection options, with an in-app purchase to upgrade to the full version. The theory was that a free version would be downloaded by more people, with some small percentage of them purchasing the upgrade.
We submitted iZOS Free version 1.0 to Apple on the 15th of May 2012. It was approved on the 23rd of May, and we released it straight away. Our first (and only!) app submission with zero dramas! :)
ZOS and ZOS Free version 1.2
For our next update we decided to add bombs. The player could bomb the zombie hordes from above, and keep track of zombies killed – and the collateral damage to unfortunate civs. Given that ZOS is just a sandbox app with no objective, the bombs didn’t really achieve anything, they were just for laughs.
We skipped version 1.1 of ZOS Free, synchronizing the versions by making the bombs update version 1.2 for both ZOS and ZOS Free. The updates were submitted to Apple on the 15th of June 2012.
On the 23rd of June we got our response from Apple. ZOS v1.2 had been approved, but ZOS Free v1.2 had been rejected, doh!
The upgrade to the full version in ZOS Free is a ‘non-consumable product’, meaning once a player buys the upgrade then they own it forever, even if they delete the app and re-install it later, or even if they install the app on another device.
However in either of those cases the app doesn’t automatically know that the user has bought the upgrade. The iOS Store Kit API which we use to handle in-app purchases has a method to restore previously completed purchases. However it’s not obvious when to do this. The majority of people won’t buy an upgrade, and then of those that do, the majority of them won’t be restoring old purchases. There didn’t seem to be a good place to stick a button which so few people would be using.
So instead in the first release of ZOS Free we didn’t implement anything special. If a player tapped the Upgrade button, they would be prompted with “are you sure you want to buy?” as normal. But if they said yes, the App Store would respond with “you’ve already bought this item”, and the app would enable the upgrade at zero cost. This seemed like a pretty simple way of supporting something which few people would be using.
This got through okay with ZOS Free version 1.0, but Apple rejected version 1.2, saying that we needed to provide a method for purchases to be restored. The Restoring Transactions section of the In-App Purchase Programming Guide says:
However, if your application supports product types that must be restorable, you must include an interface that allows users to restore these purchases.
We figured we were probably just lucky to get version 1.0 approved, so there wasn’t any point trying to respond to Apple with something like “but you approved this last time”.
We decided not to hold back the bombs from the paid version of ZOS to wait for ZOS Free, so we released version 1.2 of ZOS right away on the 23rd of June.
We then started adding a button to ZOS Free to restore the upgrade. We submitted the new version to Apple on the 25th of June, they approved it on the 5th of July, and we released it for sale that day.
ZOS and ZOS Free version 1.3
As I described in my blog post of about a month ago, in June 2012 while we were working on the bombs update Apple announced iOS 6. One of the major new features in iOS 6 was that Apple were removing Google Maps, to replace them with their own maps.
I downloaded a beta version of iOS 6 to try out the new maps, but they weren’t good enough for iZOS. So we decided our only option was to remove the Google Maps and replace them with embedded aerial photos. Due to the size of the embedded photos we decided to reduce the total number of maps to five.
We submitted version 1.3 of ZOS and ZOS Free to Apple on the 8th of August 2012. On the 17th of August we received the verdict from Apple – both updates had been rejected!
In the “What’s new” description for the update, we of course wanted to explain why the maps had suddenly changed. So we had written this:
Due to the removal of Google Maps for iOS 6, Zombie Outbreak Simulator now uses aerial photos that are stored within the app itself. Therefore we have lost most of the old maps and added 4 new maps across the UK and Australia.
Apple rejected the updates with this explanation:
We found that your Release Notes contain references to a pre-release version of iOS/SDK in the metadata. Referencing a pre-GM version of the iOS/SDK is not in compliance with the iOS Developer Program License Agreement:
Section 2.3 – “…Apple may provide You with pre-release versions of the SDK that constitute Apple Confidential Information and are subject to the confidentiality obligations of this Agreement.”
Your Release Notes state: “Due to the removal of Google Maps for iOS 6, Zombie Outbreak Simulator now uses aerial photos that are stored within the app itself.”
It would be appropriate to remove any references to the pre-release version of iOS from your app metadata.
I responded to Apple saying that I understood the policy about referring to pre-release software, but asking if we could refer to iOS 6 in the way we had, as the removal of Google Maps was publicly announced (in their own keynote!), and so would be common knowledge. They responded by saying that the reference to iOS 6 had to be removed to be compliant with the guidelines.
So, we changed the update description to:
Due to circumstances outside of our control, we have had to remove Google Maps. Zombie Outbreak Simulator now uses aerial photos that are stored within the app itself. Therefore we have lost most of the old maps and added 4 new maps across the UK and Australia.
We put the apps back into review with the updated description on the 18th of August. The update to ZOS Free was approved on the 21st of August, and the update to ZOS was approved on the 29th of August (not sure why that one took longer!).
Since version 1.3 felt more like a downgrade than an upgrade (dropping from 10 to 5 maps), we figured we’d wait a while to release it. On the 12th of September Apple announced their new iPhone 5, and that they’d be releasing iOS 6 on the 19th of September. So we released version 1.3 on the 13th of September, to give people a bit of time to download the update before iOS 6 dropped.
ZOS and ZOS Free version 1.4
Version 1.4 of ZOS and ZOS Free is a quick update to add support for the iPhone 5. I submitted this to Apple on the 21st of December, so about 11 days ago.
I’m hoping that this is taking longer than normal to review because of Christmas etc, not because Apple are getting ready to reject it again. Hopefully the rejection rate of ZOS and ZOS Free drops from here on – cross fingers! :)
ZOS and ZOS Free version X
In the future I’m hoping to be able to bring Google Maps back to iZOS. I tried the new Google Maps SDK for iOS recently, and it was close, but not quite there. With luck Google will release a new version of their SDK which makes it possible for me to bring maps back to iZOS. Otherwise I’m going to try to figure out some other way to get it to work.