Rejection hurts

Simplenote comrades, our big update has been rejected. After the stinging news, our self esteem dropped, we questioned our self worth, and wandered dark alleys in a drunken stupor. But somehow we are picking up the pieces and soldiering on.

The rejection explanation was short and to the point:

3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. The non-public API that is included in your application is setOrientation.

It looks like the update was doomed from the start with our usage of an illegal, undocumented API call to implement our new orientation lock feature. While we’re not particularly thrilled with Apple’s new jihad against illegal APIs, they are the law of the land, and we must obey or suffer horribly (Android? Please no.) But who is going to speak for the illegal APIs? How far is Apple willing to go to secure the sandbox borders of the iPhone from the illegals? Next thing you know they are going to deny them education, healthcare benefits, and drivers licenses. Here at Simplenote we are starting a campaign to grant amnesty to ALL illegal APIs. Pledge your allegiance to our movement by sending us a message @simplenoteapp.

Meanwhile, a workaround for Simplenote has been submitted and as we await the result of Apple’s shiny new SCAT (Static Code Analyzer Tool), we can only hope that it’ll finish quickly so the update can be in your hands post haste.

6 thoughts on “Rejection hurts

  1. You guys still have my most favorite app in the app store. You are doing good work. I will wait patiently (that was hard to say) for the update.

  2. I’m sorry to say that, from the circumstances you’re describing here, I’m not entirely full of sympathy. It’s been known since day one that Apple don’t want private APIs being used, and while it’s somewhat hit and miss actually getting caught, this isn’t like some of the other instances of App store problems I’ve seen. The post at Rogue Sheep’s blog, where XCode was effectively compiling in a reference to something that used a private API even though the referenced component wasn’t used any more. That’s arguably not really their fault, whereas explicitly using a private API, while loosely (accidentally?) permitted in some apps, is against the letter of the law, and hope you guys are better than that.Given how good Simplenote is, and what an essential part of my life it’s become, I’d hate for it to be broken by a change to a private API.On a more positive note, it’s very heartening to hear that you’ve managed to work around the issue – locking the orientation is a great feature to have.

  3. Did you actually get the orientation locking feature working without using any forbidden API? There are several applications that are much improved by this feature and I would hate to think that there is no way to obtain this behavior without illegal API calls (especially since these are not going to go through the App Store’s tests any more).Apart from that, I have to say that I side with Rolphus. The API were forbidden from the start. Apple is preventing programmers to use them so that it can provide a stable platform. While I like the feature, I would hate it more if applications I have bought stopped working when I upgrade my iPhone’s OS. I am willing to do without it until there is an official way to do it.

  4. @Rolphus and Pascal: You’re right that in the end, at least in this case, it was our own fault. We knew the rules, and even though the method we used is widely used by others as a means of forcing re-orientation, that doesn’t excuse us.The original post had a deliberately silly tone. We’re disappointed of course, but we’re not extremely angry. Speaking for myself only, I’m actually fairly relaxed about Apple’s policies. The approval process isn’t so bad compared to some of the hoops you have to jump through for an Xbox 360 game to be approved, for example.The orientation lock will still be there when the update is released. The only limitation is that if you lock the app to landscape mode, it will still start in portrait mode. But it won’t stay there for long if you’re holding it in landscape mode. It will proceed to rotate and lock right away.It’s not an ideal implementation but it’s our first attempt at it and it works!