Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

The title pretty much says it all, but I can elaborate. I have a paid iOS app that has plenty of existing customers. I think i want to convert to a free app now, and allow full upgrade via in-app-purchase. The problem is, I don't want to make my existing customers buy the app again to use it, nor do I want to make it easy for hackers to just flip a switch and get the pro version.

What is the most secure way to "Grandfather In" existing users of a paid iOS app that will go free?

share|improve this question
add comment

2 Answers

up vote 6 down vote accepted

A big problem with trying to be tricky is you never know when/if someone who purchased your app will run it again. I am assuming you don't have some sort of registration involved with your app where you have contact information of your users, that would be too easy.

Probably the best way:

  • Introduce a new version that is free and keep the paid version. Some people might prefer to buy it outright in the future. Downside is it splits your "popularity" between two copies, but upside you get more hits in search results. You may want to differentiate them by name somehow, but if the free one upgrades to full functionality then avoid calling it "free" or "lite". While you are maintaining two apps, they can share 99% of the same code.

Every other solution I can think of would either be a lot of work, or have the potential to leave a lot of users out.

share|improve this answer
    
I dont know if it is ideal, but this is the way I went. –  coneybeare Jan 14 '11 at 4:47
1  
The more I think about it, this is really the most secure. There is no possibility of abuse or vulnerability. –  Jim McKeeth Jan 14 '11 at 9:37
add comment

What if you point-update your paid app with an "Unlock in-app-purchase version" feature? It calls home, you authenticate that it's not the 500th unlock for this user, and put them in your database. Put an "upgrade from previous version" in the in-app-purchase version and, if they activate via that route, it calls home and you authenticate them against the database (making sure that they're not the 500th upgrade for this user)?

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.