iPhone App Store roulette: A tale of rejection

Apple's random rules for iPhone app approval are a recipe for trivial apps and alienated developers

1 2 3 4 5 6 7 8 Page 3
Page 3 of 8

I would feel better about the App Store's decisions if they were understandable and predictable when they finally arrived, but they seem capricious and often outright wrong. Some of the rejection letters claimed I was misusing the UIWebView. They cited section 3.3.1 of the agreement: "Applications may only use Published APIs in the manner prescribed by Apple and must not use or call any unpublished or private APIs."

My app just dumped pure HTML in the UIWebView. When I wrote back and showed examples from Apple's documentation that used the APIs in exactly the same way, I heard nothing. Apple didn't "think different" when it created its customer service team for the iPhone developer. The company just borrowed standard operating procedure from the worst bureaucracies in the world (say, the DMV from Soviet-era Russia). Then it put the process behind an e-mail wall, giving the whimsical fascists the ability to operate without any contact with their cat toys. At least the old Soviet-era bureaucrats in "The Lives of Others" had to watch the effects of their games.

Some of the delay came because I chose to build my application on an open source project called PhoneGap. This project is a thin wrapper around the UIWebView object. You write your application in HTML and JavaScript, and the code loads it into UIWebView. It saves you the trouble of building out all of the Cocoa code.

You might think that Apple would welcome a toolkit like PhoneGap because such an open source project can reduce a lot of the common bugs that developers encounter at the beginning -- but that's not the experience of many. While Apple doesn't explicitly forbid the use of PhoneGap, it's clear they reject many -- but not all -- projects that use it. Many PhoneGap users report they received the same text in their rejection letters as I did: PhoneGap is an "external framework" and those are forbidden.

Some PhoneGap developers have had some success, and they've shared this with others. The men and women behind the curtain only look at the linking tables to see the names of the objects. So someone wrote a Python script that would replace the word "PhoneGap" with your own made-up package name. Voilà -- it often works.

But make sure you delete words like "gap" from your HTML too because Apple's powerful anti-PhoneGap tool (grep) can sniff them out. When I fixed my code to get rid of the external framework, I inadvertently left in an HTML page with a thank you message to the PhoneGap team. Oops. That file was soon flagged. So I deleted the thank you note and settled down for another few weeks of waiting.

The latest twist is that my application is again rejected (a few weeks after it was approved) because PhoneGap is now officially forbidden. There is hope, though, because Apple says it is in communication with the PhoneGap organizers at Nitobi. When I checked with the folks at Nitobi, they told me that PhoneGap is 100 percent in compliance and they're working on educating Apple. But Apple has told them little except to pay attention to the rules.

School rules
Through all of this, I received little guidance from Apple. Whenever I sent in a question asking how long the review would take, I would get back a polite but worthless e-mail saying that every "app submitted to Apple has different capabilities, features, and complexity, which means that individual review times vary. Once the application review process has been completed, you will receive an e-mail notification."

1 2 3 4 5 6 7 8 Page 3
Page 3 of 8
How to choose a low-code development platform