Several developers, particularly those who use PhoneGap — a tool software devs use to access the iPhone’s hardware — have been kicking sand in Apple’s face over the use of private, or third-party Application Programming Interfaces (API). Apparently, the App Store has either booted or rejected apps that use private or third-party APIs.
Michael Nachbaur, the developer of PhoneGap, recently posted an open letter to Apple on his blog, Web Developer’s Life in Beta. In part, Nachbaur wrote:
Hello, I'm an iPhone software developer, and one of the core developers of the PhoneGap project. A number of users of PhoneGap -- a set of Objective-C classes aimed at leveraging the UIWebView to access iPhone-supported hardware features -– have reported that their apps have been rejected from the App Store because they supposedly use a "3rd-Party Library". I wanted to get some clarification about this, as this is not only untrue, it is completely at odds with the goals of our project.
Nachbaur goes on to ask why Apple is targeting PhoneGap, when it it has allowed other devs to use third-party APIs,
PhoneGap only uses officially-supported features of the iPhone, as documented within XCode's iPhone SDK documentation. We even make sure that we don't even use deprecated features of the iPhone, as we want to ensure 100% compatibility. All the software we use is exposed natively by the iPhone, and is in use in many other apps on the App Store.
I asked Lars Bergstrom , developer of WiFinder, what the fuss was all about. I reviewed WiFinder a while ago and it has since been pulled by Apple from the App Store because of its use of private APIs:
“I think there's also a simpler explanation [than Apple’s targeting PhoneGap],” Bergstrom told me via email. “It takes a lot of work to make and support public APIs for developers to use — I worked on developer tools for Microsoft for quite a while, so I'm familiar with the situation.
"Having developers ship popular applications that rely on code that Apple still wants to be able to change, will prevent Apple from being able to do that," Bergstrom says. “And even if they approve of a particular application, if they aren't consistent about rejecting every application that uses private APIs, they get all sorts of goofy blog posts like mine and Nachbaur’s, “Why me?"
Based on phone discussions Bergstrom says he has had with Apple about the App Store review process, he doesn’t think Apple is playing favorites. It’s rejecting every app that has private APIs.
What does Apple say?
The use of private API. Usage of such non-public API, as outlined in the iPhone SDK Agreement section 3.3.2 is prohibited:
An Application may not itself install or launch other executable code by any means, including without limitation through use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by Apple's Published APIs and built-in interpreter(s).
What we have here is a failure to communicate, rather than a failure to cooperate.