ACCEPTED: Toginfo (despite using private API)

This will either attract great joy and happiness … or mass wailing and gnashing of teeth. Apple has just accepted an update *despite* acknowledging its use of a private API:

During our review of your application we found it is using a private API, which is in violation of the iPhone Developer Program License Agreement section 3.3.1; “3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.” While your application has not been rejected, it would be appropriate to resolve this issue in your next update.

Thoughts

Toginfo [Toginfo Pro] is using the initWithWindow command as part of the widely-used (1, 2) UIProgressHUD. Incidentally … I thought UIProgressHUD was itself a private API? I don’t think you can use it without using initWithWindow, so perhaps Apple is only checking method calls and not references to classes.

(NB: although one commenter on the StackOverflow link above says “this is not linking to private API. We’ve done something similar with buttons on the UIAlertView, went through review with no problems.” that’s technically accurate but not really true. ObjC doesn’t do linking – so that’s irrelevant – but this is definitely *using* a private API)

Perhaps this is the “unofficially official” new (internal) policy at Apple for coping with the mass of pedantic mass auto-rejections of apps? I’m thinking particulaly of those done for using libraries (which the app authors may have not known about) … that themselves used often quite innocuous private APIs for months or years without anyone noticing.

Either way … as Ole (author of Toginfo [Toginfo Pro]) puts it:

this saved me waiting another ~14 days.

Post to Twitter

This entry was posted on Monday, November 30th, 2009 at 8:06 pm and is filed under Uncategorized. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

4 Responses to “ACCEPTED: Toginfo (despite using private API)”

  1. Rob Says:

    well done Apple.

    Much better to give developers a gentle slap and accept the app – with an instruction to clean it up by the next release.

    Altogether much more sane.

  2. RosebraeTech Says:

    Fantastic news, an outbreak of common sense at last! And a much better way to deal with things like this, IMHO.

  3. AR Says:

    I had three weeks ago an application rejected for use of private API. The app was actually not using it – it had it only within a method that was never called (leftover from testing), but they probably check only for reference, not if it is acutally called – anyway, I was fine with the rejection and upload a new binary, but didn’t find the time to recompile right away. A couple of days later I got email that application status changed to ‘ready for sale’ – without me doing anything ….

  4. Joachim Schuster Says:

    Fantastic!? That’s purely arbitrary. I doesn’t see the problem with being rejected for the use of a obviously undocumented function call.
    The good thing is, you can check it before you upload it.
    Why some should be exempt from the rules?

    What’s realy anoying is to be rejected because of ‘minor use’.
    What kind of rule should judge, if a consumer may find it ‘of minor use’?

Leave a Reply