Clicker App Rejected for CoverFlow private API use!?

UPDATE! Apple reversed their decision, and Presenter will be available on June 1st on the iPhone App Store!

(Also: Jonas Salling, of ‘Salling Clicker’ fame from 2003, kindly asked me to rename my app, Clicker, to avoid any possible confusion.)



Twenty-four days after submission, I received this email today, stating that Apple has rejected Clicker from the iPhone App Store.

Hello Alex,

Upon review of your application, Clicker cannot be posted to the App Store due to the usage of a non-public API.  Usage of non-public APIs, as outlined in the iPhone SDK Agreement section 3.3.1, is prohibited:

“3.3.1 Applications may only use Published APIs in the manner prescribed by Apple and must not use or call any unpublished or private APIs. ”

The non-public API that is included in your application comes from the CoverFlow API set.  A screenshot of this issue has been attached for your reference.


iPhone Developer Program


I absolutely did not use any unpublished or private APIs. Just like several other people, I wrote my own CoverFlow-like user interface completely from scratch using standard, public, Core Animation layer backed views. I was so paranoid with the approval process that I didn’t even use the Apple trademarked word, “CoverFlow”, in my app’s description.

Clicker controls PowerPoint or Keynote on your Mac. In Portrait mode, you can view speaker notes, change slides or control your computer’s mouse. Rotate your iPhone and in Landscape mode, you can flick through every slide in your presentation. Double tap to jump to that slide.

Check out this movie of the CoverFlow implementation in question.

I fully agree with Apple that third party iPhone apps should stick to only using Public API’s. Applications should not break because of an iPhone OS upgrade.


I totally understand how easy it is to make a mistake like this, but I’m still frustrated Apple didn’t ask me about this earlier. (Sidenote: O’Reilley’s Safari Bookbag iPhone App was allowed to use Apple’s private CoverFlow API).

I’ve replied back to the iPhone Developer Program, waiting to hear what they say.

About this entry