I have a successful paid for application on Google Play Store and want to update this app to be a free application with in-app purchasing.
I have just completed developing the free version of the app which gives users restricted access which can then be unlocked using an in-app purchase system.
The issue i have is that all my existing users who have paid for the app will upgrade and then be prompted to pay again, which of course isn't right.
Is there any way to check the purchase history of the user, identify that they have paid for the app previously and unlock the extra features without the in-app purchase?
Thanks for any help. Lewis
For Google Play there's no distinction between having paid for an app or downloading it for free. For example, if an user download an app while it's free and it's later changed to paid that user will still have full access to it, even being able to download it on other devices.
There are some lame workarounds for that:
That said, keep in mind that many games have become free after some time. Maybe the users won't mind it that much.
https://developer.android.com/distribute/tools/launch-checklist.html#decide-price
This link seems relevant, hope it helps
You can keep the existing paid version and create another free version.
If you really don't want to have 2 versions, just make it free and tell users something like 'Contact us if you have bought the paid version. We will give you redeem code to unlock xxx'.
I feel the most easy way is to use theese line of codes
This gives you the old version code
This gives you the current version code
Now you can compare and do what you want. Don't forget to update after every time with this line of code
It's been a year, so the OP probably doesn't need this, but in case anyone else happens upon this one...
You could approach this a couple of ways. Obviously there is some business logic on your new in-app purchasing app to track who has/hasn't paid. So the two ways I see you being able to go about this is as follows:
Idea 1:
You could do a preliminary update to your paid app that stores a
SharedPreference
or some other persistence in the app (you could store the versionCode, so you know what you're upgrading from and have business logic around that). Then update to the free version, and have the free version check your shared preference and do the right thing on an update from a "paid" versionCode.Idea 2:
You could keep both apps separate (have a paid version and a free with in-app purchases) and push an update to the paid version to have a
BroadcastReceiver
that doesn't really do anything other than listen to specific intents and have your in-app purchase check to see if something will receiver your custom intent. If your old paid-version exists, then they paid for it, if not they didn't. (If they paid for the paid version then uninstalled you'll have problems obviously...)Idea 3:
You could keep both apps separate (have a paid version and a free with in-app purchases), and push an update to the paid version that just posts an
Intent
to open the in-app purchase app (if it's installed) with some special arguments, to let you know they opened it via a paid app and do the right thing to set them up as having paid for it in-app. That opens yourself up to some detection problems though... (Solvable but kind of clunky)