• Three20
The Coathangr iPhone app was rejected today for using private APIs.
The following non-public APIs are included in your application:
firstResponder
UITouch._previousLocationInWindow,
UITouch._tapCount,
UITouch._timestamp,
UITouch._touchFlags,
UITouch._view
UITouch._window
A quick Google search confirmed my suspicions: the Three20 library is to blame.
Three20, if you’re unaware, is the library that the Facebook iPhone app is built on. Joe Hewitt, the man responsible for the Facebook app until recently, decided to share his work with the world, making certain data collection and UI presentation tasks easier for developers.
Hewitt also just made news with his rather public break-up with the app store:
My decision to stop iPhone development has had everything to do with Apple’s policies. I respect their right to manage their platform however they want, however I am philosophically opposed to the existence of their review process.
Given the popularity of the Three20 library, it’s a good thing Hewitt got away from the iPhone before these rejection letters starting coming in.
I think it’s reasonable to say that because the Facebook app is so high-profile and has not been rejected (that we know of), we can expect that same code to pass the sniff test in our apps. And I think it’s reasonable to say that Apple’s app review process is cumbersome, infuriating, and a major blemish on an otherwise very attractive platform.
But…
At the end of the day, I can’t blame Hewitt or Apple for this rejection letter. I’m frustrated, and I would really like to blame them, but just as we knew what the app store approval process was like before we wrote our first line of code, we also knew that Three20 was a free, unsupported library. This is the game we’re playing, and we have to accept responsibility for our own decisions.