It seems as if a week doesn't pass without a new story of some app being rejected from Apple's iPhone App Store. Should developers really be surprised? Steve Jobs never wanted third-party developers tinkering with his platform in the first place, he thought Safari-based web apps would be enough. Little wonder, then, that when Apple launched the App Store in 2008, it was under strict conditions.
Still, it'd be nice for Apple to make those conditions clear. Apple has been tinkering with the language of its iPhone SDK licence agreement lately, but that hasn't done much to clarify the rules, unless you're Adobe. For everyone else, the App Store's requirements seem as vague and capricious as ever.
So let's try to tally the score. There's no guarantee that anyone's app will be accepted, but as near as I can tell, here are a few things you can do to get you booted off the App Store:
1. Write lousy code.
To be fair, not every app deserves to be posted. Apps that crash, at least often enough that they bomb on the App Store's screeners, are deemed unfit for distribution. What's more, your app has to work as advertised. If it's missing features or if it springs unwanted surprises on the user, it's a safe bet it will be rejected. I think we can agree that's a good thing. It would be nice, though, if the rest of Apple's rules seemed as reasonable.
2. Duplicate Apple's software.
The iPhone comes with a set of pre-installed software that provides basic functions, such as voice calling, SMS, email, MP3 playing, and web browsing. Duplicate any of those and you're out even, or maybe especially, if you improve on Apple's offerings. Just ask Google, or any of the various developers who came up with podcast software for the platform.
3. Get in the way.
Apple expects its handsets to work a certain way, and if you interfere, you can expect your app to be rejected. That's why you can't sync your iPhone with iTunes over Wi-Fi, for example. It doesn't matter that people might want that capability; changing the way the iPhone normally does things is a no-no.
4. Execute interpreted code.
This one has been discussed at length. It's why you can't get Flash or Java on your iPhone or iPad. It's also why you can't do fun things like emulating a Commodore 64 on your phone, and it's why iPhone users can't run RevMobile, a clone of Apple's long-lamented HyperCard software. Apple has offered various excuses why these things are verboten, but none holds much water.
5. Use too much bandwidth.
AT&T likes to complain that dropped calls on its network are because iPhone users are gobbling up too much bandwidth. Apple is apparently listening; if your app is too network-centric, it's likely to be rejected. That's why Internet radio apps are off-limits (when they're not duplicating core iPhone functionality, that is).
6. Include "objectionable" content.
The App Store is no democracy, which might be why Apple doesn't feel inclined to support free speech. A joke app that simulated clubbing baby seals was recently rejected, a move that earned Apple a box of chocolates from PETA. A rather angry, old Nine Inch Nails album was blocked, too. If those aren't objectionable enough for you, Apple also blocked Mark Fiore's political cartoons; a collection of copyright-free e-books that included the dreaded, centuries-old Kama Sutra; and a Chinese-language dictionary that had the temerity to include curse words.
7. Use Apple's APIs (without permission).
Windows developers have long accused Microsoft of keeping its best APIs to itself so that third parties can't write applications that work as well as Microsoft's. But whether that's true of Microsoft, Apple makes no secret of the practice. Its licence agreement explicitly forbids apps that use undocumented APIs. On the App Store, it's "do as I say, not as I do."
8. Use someone else's stuff.
It's no surprise that Apple doesn't approve of apps that violate copyrights or trademarks, but the App Store screeners take enforcement of this rule to extremes. One app was rejected because it makes photos taken with the iPhone's built-in camera look too much like Polaroid pictures, and a BitTorrent app was rejected not because the app violates copyrights, but because someone could use the app to violate copyrights, much like a web browser, in other words.
9. Don't do enough.
Some of us thought Armin Heinrich's $999, featureless I Am Rich app was an amusing satire on our gadget-obsessed culture, and Apple's market in particular. Apple thought it was a waste of space and promptly pulled it from the App Store, so before you start work on that Brooklyn Bridge app, take note.
10. Design your own UI.
Apple's Human Interface Guidelines are very explicit. If UI elements don't click and move just the way they're supposed to, or if your app otherwise doesn't look the way a good iPhone app should, expect a curt rejection note. Whatever your ideas about UI design, no matter how much research you've put into them, you're wrong.
11. Use graphics Apple doesn't like.
Apple even reserves the right to reject apps on visuals alone. One app was rejected because a clock icon used in its UI looked too much like an icon Apple was using for another feature. Never mind that the app had been using the exact same icon for the past several versions; "if thine eye offendeth Apple ..."
12. Put photos on your desk.
Sometimes Apple's objections simply defy explanation. When Australian developers Shifty Jelly asked for clarification why their photo frame app was rejected from the App Store, they received a curt email response from Steve Jobs himself: "We are not allowing apps that create their own desktops. Sorry." I guess that clause hasn't made it into the licence terms yet, maybe for iPhone SDK 5.0.
That's quite a list. Of course, to Apple's credit, a lot of apps that are rejected at first are approved for the App Store upon further review. Others require only minor code changes. For many developers, the hassle is worth it when you consider the scope of the App Store's audience.
For others, however, Apple's strict control over everything about their apps, including their functionality, resource consumption, UI design, content, sales model and time to market, is simply too much to bear. For those developers, listening to the tales of woe from iPhone developers as they keep coming in, the grass on the other side of the fence must look greener every day.