Update (June 6th, 2012): We do have some definitive answers, though not great news, discussed in this post.
While last week’s post was intended only to provide information about Apple’s removal of Airfoil Speakers Touch to our existing and future users, it’s been picked up by many sites across the web, igniting many conversations about the App Store. There’s also been plenty of feedback and speculation by outsiders as to why Airfoil Speakers Touch was pulled. Unfortunately, we still have no hard answers direct from Apple. It’s worth reviewing a few things though.
Was Airfoil Speakers Touch pulled because it duplicates functionality coming in iOS 6?
While this was the most popular theory floated, it’s likely off-base. We don’t know what iOS 6 contains, but there’s little precedent for Apple pulling already-accepted applications from the store because future versions of iOS will contain similar functionality.
What exactly did Apple say the problem was?
When we spoke to Apple last week, they told us that we were in violation of the rule stating “applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs”. However, despite repeated questions, they’ve been unable to tell us which specific APIs we’re misusing.
As we’ve stated, to the best of our knowledge we’ve implemented Airfoil Speakers Touch using only publicly-available APIs, and in full accordance with the developer agreement. We’ve continually asked what non-public APIs they believe we’re using and have received no response.
Indeed, there seems to be something of a communications problem with Apple, as we haven’t heard from them since May 23rd. Apple apparently did have time to contact The Verge about this issue on May 25th, however, repeating their claim that we’re using non-public APIs.
Maybe Apple considers the ability to receive audio from iTunes and iOS a “non-public API”?
It seems possible, though it doesn’t make much sense. We’ve certainly never seen a network protocol referred to as an API before.
An API (Application Programming Interface) is a set of interfaces that provide access for a 3rd party application like Airfoil to interact with underlying system libraries. A protocol on the other hand, is an agreed-upon method of communication between two different applications.
If Apple is suddenly referring to network protocols as a “non-public API”, it’s a gross abuse of both the terminology and the license agreement. Furthermore, if that is the case, what protocols are fair game? Apple doesn’t provide a list of which protocols are allowed and which are not.
Right now, we’re still working within Apple’s process. We’ve submitted an appeal to the App Review Board, per Apple’s instructions, and we hope to hear back on that soon. Unfortunately, both the App Store and the review process are entirely controlled by Apple, so there’s not a lot else we can do at the moment. We’re definitely concerned Apple may just silently stonewall on this, so we’ll keep discussing it here.