My honest opinion is that the only solution here is to pack up and leave Apple's closed ecosystem, because they clearly don't care about their developers. If you are continuing to do business with them you are sending them a message that it's OK to continue to do this. If it's a Mac app, sell it on your own website; if it's an iOS app, rewrite it for Android and sell it there.
Interesting assertion. Are those other distribution vectors as profitable and trustworthy as the Mac and iOS App Stores?
From my own experience as an app developer, selling the same app on the Mac App Store and through my own FastSpring based store, the Mac App Store is fantastically more profitable. We have a free trial which offers a seamless in-app purchase through our FastSpring store, and we also offer bulk purchases and enterprise discounts through that store, yet the vast majority of our sales are through the Mac App Store. From my numbers, only one day have we seen more copies sold through our own store, and the revenue that day was still less than the Mac App Store's.
From my own experience as an app purchaser, the App Stores rock. I can quickly download and install any and all purchased apps on any and all of my devices. I don't have to worry about serial numbers or registration files. I don't have to worry about nefarious acts that might compromise my download. Hell, I don't even have to worry about installing. The app just appears on my system, ready to go with a single click.
So, from both sides of the field, Apple's App Stores offer a fantastic experience. Are there downsides? Sure. As a developer, I need to worry about bugs like the OP hit and I need to deal with Apple's approval process. But that said, I have to worry about bugs in my own store and purchase validation code (bugs happen there, trust me!), and the approval process leads to the huge upside I and everyone else experience as consumers. And if that process makes consumers more willing to purchase my product, I'm willing to pay that price.
You can call the ecosystem "closed" and you may feel Apple doesn't "care about their developers" but, from my point of view, Apple's provided us with a fantastic platform, some of the best dev tools out there, and the single best software storefront that exists today. Personally, I'm feeling quite cared for and don't see any other platform or storefront offering the same experience. Not by a mile.
For Mac OS X apps: over the intertubes, of course. In fact, there's lots of awesome things (Sparkle auto-updater framework) that make this easy.
For iOS apps: Most of the time you don't. You could write your app as a mobile web app, but that doesn't cut it for a lot of apps. If you're determined to have a legit iOS app, you're playing Apple's game.
For Android apps: You can distribute on a number of app stores, in addition to or instead of the official Android Market. You can also offer downloads that can be installed manually, although this requires users to change a setting to allow so-called "sideloading" of apps.
I really don't like how people consider App Store apps "legit" and all the rest "illegal hacker shit".
Jailbreaking is simple and performed by millions. Support issues aside, if I were selling iOS software I would offer it in the App Store as well as on Cydia.
I never said that iOS apps not on the app store were "illegal hacker shit." Not my words.
That said, yes there are alternative app stores available for iOS devices but I would hardly call them "legitimate" since Apple defines that term with respect to their devices. The sad truth is that you have to bypass Apple's restrictions, and continue to do so for each new iOS release, to benefit from an alternate app store like Cydia.
The same way you did before there was an app store - through your website. As for Android, you can sell APKs through your site that people can sideload onto their phones.
Yes! Why didn't we think of this before, we could just... go back to doing what we were doing before that never worked very well!
People already complain about too much competition on the App store. On the web you're competing with virus' and everything else as well. And people have to figure out where you are.
Having your app on the App store is like having it in some giant big box store. Having it on the web is like having your app somewhere on the planet.
There are mechanisms for sideloading to a limited number of devices. Those mechanisms used to be trivially exploitable to authorize an infinite number of devices, but AFAIK, Apple locked it down a lot more and blocked developers that were doing it quite a while ago.
Yes, exactly, either you don't make apps for their platform anymore (in the case of iOS) or you distribute them through your website, just like before the app store existed. Or, you could make a webapp.
Apple has been treating their developers like crap ever since the app store opened, and the only way to change it is to vote with your wallet (or more accurately in this case, your development time). Otherwise, you are part of the problem.
I'm not sure what is dishonest unless the product mis-represents itself. Crippleware was big in the shareware scene all through the late 80s and 90s and still works today.
Perhaps Apple could allow a new category, but it is an honest model.
You obviously didn't grow up in the shareware gaming days. All the old Apogee classics (Wolfenstein, Commander Keen, etc) were 1 episode teasers that required you to pay to play the remainder of the game.
I have to say that they (or more rightly Doom) were a revelation at the time: cripple-ware that wasn't crippled.
Most cripple-ware wouldn't give you a fully-functioning product: save didn't work, print had "UNREGISTERED" (or worse) emblazoned over it.
Having a great, polished level for free and the opportunity of buying more isn't my idea of crippleware. There is no feeling of being cheated and no "if only".
(I guess I should clarify that this is an analogy, and that the same applies for desktop software. Dial home = one extra layer against piracy if someone pirated the app.)
Most iOS apps use a standard set of system calls to check if the item has been purchased. I assume the hack works by patching the systems calls to return YES to all queries about in-app purchase items. That's how I would do it if I was building something like that. There are no tokens or keys to validate... it's just "hey system, is this paid for? okay!"
It is a model which allows people to try before they buy, which also expands the audience and allows the game to spread. It is a good thing when implemented well.
It would easily be sufficed with a "free app" and "paid app". Apple just doesn't make this seamless. Consequently, the "freemium" model is born through in-app "upgrades".
As someone who hasn't bought a single in-app purchase (I might if Carcasonne add expansions), are these transferrable across devices like the apps are?
Yes, iOS in-app purchases are transferrable across devices that are linked to the same app store account. It is a somewhat strange experience when you do it the first time because you are basically expected to "buy" the item on the additional device and then at the last moment the system determines that you already paid for it and provides it for free -- I had visions of getting a bill for multiple in-app purchases of the same item but in the end it all worked out.
For this reason (and for clean installs) there's an option in the API for "restore purchases". Applications should provide this option in addition to "buy".
Another benefit of it is that it restores all in-app purchases for this app. Very helpful in case the application provides more than one purchase product.
It's really the only way to do a trial of any kind in Apple's app stores. It's better than a lot of apps in the App Store where you have to pay in full for it without being able to try it at all, including Apple's.
It's been fun watching this comment's points go up and down like a yoyo. At one point it was at -1; it's currently at 10. This is clearly an issue that divide HN readers.
I obviously fall in the against camp — though I can see the argument for it (and many good points have been made).
There is no simple answer other than very clear labelling.
Didn't shareware work like this back in the day? Or are these apps selling themselves as "free!!!!!" and hiding the "(extra features cost $$)" in small, hypothetical print?
Slightly OT: I notice that your apps are for sale both in the App Store and through your own site.
I'd be interested in hearing about your experience maintaining your own sales/fulfillment channel while also taking advantage of Apple's. What advice would you give other developers?
Not sure I'd advise to those starting out today, except for the following cases:
1. You consider enterprise or other large sales, which are not comfortable through Mac App Store.
2. You want to participate in bundles or other promotions. Technically, you don't need a store for this but you need to create a version which can be licensed outside of Mac App Store.
Personally, I started selling ImageFramer (my first Mac application) in 2006, so we first had our own store and Mac App Store came second.
I remember Google having reported various problems with their app store in the past, so the accusation is not valid, at least with respect to what we're discussing here.
Expecting anything more than this from Apple is deluding yourself.
If they can't get fixes out for security holes until they're in imminent danger of being in the spotlight (Pwn2Own - and that's only one example; Apple are especially notorious for only fixing things when it affects their public image), then expecting them to fix issues like this is extremely naive.
Also, it should be known that in the SDK terms of use, Apple warns that it's a bad idea to tell the press when there's a problem, so developers are actually afraid of publicly complaining about Apple...
If you think we developers don't test in-app purchases before releasing, think again.
It's one the most critical parts of user's experience and certainly this is not a place where we'll just write code and ship without testing.
The problem is that it didn't happen for all transactions and appeared to work for some users but not for other. Sometimes it worked for some user on one machine but not on another.
And another developer who hit it with his app in testing didn't understand it was Apple's issue. He created another test-user Apple ID and it worked then so he supposed it was kind of a glitch related to his use of the previous test Apple ID. Really, the last thing you'd think is that Apple has bugs in the payment system.