Coding the transition to a freemium model


I currently have a paid-up-front app that I would like to transition to a freemium model. The current state of the app is that it contains musical instrument patterns. Pay the purchase price today, and you get all of the patterns and features.

My envisioned future state of the app is where a small subset of the patterns (and potentially instruments) are included in the free version. Other instruments, their patterns, and some other app features would be available via IAP. I would also add ads once I figure that out!

The IAP tutorial here at RW shows you how to setup IAP items on iTunesConnect, but does not seem to cover how to use the IAP and their purchase statuses in code, and doesn’t address what to do about previously existing users. I would like to have users that have already paid continue to get all patterns and current features, while new downloads will have to use IAP to get the same functionality. Previous users would need to buy any additional patterns or functionality.

This all seems very complicated to design and code and I’m not sure where to begin (I should note that I bought the existing code base, and I’m not a very experienced dev). I’m not sure how to determine whether a user purchased the app at full price or not. I suppose I could create a new app that is free, but I do not want to maintain two apps, and if a previous user downloads the freemium version to access new features that I’ve only added there, then I still need to determine that they were a previous user and give them the credit.

Any advice is greatly appreciated!

Previously, I usually just use the callback from the purchase, and store the unlock status of an IAP.

For users that have reinstalled the app, you also need to have a restore button for them to re-unlock their purchases. When you call restore, I think that you should get a call back containing all of the identifiers that have been previously purchased.

I have actually done a migration from a paid app to freemium, although it was a few years ago, so it’s possible that things have progressed since then. There is an api to get the receipt of the app purchase in iOS, although it’s a C api that an absolute pita to use, although I did manage to muddle my way through it. The receipt gives you the original purchase date and original purchase version number. You can use this to auto-unlock your IAPs for users who purchased the app before the move to freemium

Apple’s documentation on receipt validation at the time was terrible, it took a day or so to get right and fully test. Maybe you can find an open source library to do it for you?

Here’s a few links I found on the topic:

“The technique is pretty simple. All you do is check the ‘original_application_version’ of the receipt when the user first runs the updated app.”