Change a Paid Android app to a Free app with in-ap

2020-03-02 03:47发布

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

5条回答
▲ chillily
2楼-- · 2020-03-02 03:51

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:

  • Enable google play game services on the paid version and try to convince users to connect to it. Use google play services to store "bought while paid" information to the cloud and restore it whenever that user logins
  • Give all the users who've bought some key to unlock features
  • Create a different for the free version of the game

That said, keep in mind that many games have become free after some time. Maybe the users won't mind it that much.

查看更多
一纸荒年 Trace。
3楼-- · 2020-03-02 03:54

https://developer.android.com/distribute/tools/launch-checklist.html#decide-price

This link seems relevant, hope it helps

On Google Play, you can publish apps as free to download or priced. Free apps can be downloaded by any Android user in Google Play. Paid apps can be downloaded only by users who are in a country that supports paid downloads and have registered a form of payment in Google Play, such as a credit card or Direct Carrier Billing.

Deciding whether you apps will be free or paid is important because, on Google Play, free apps must remain free.

Once you publish an app as a free app, you cannot change it to being a priced app. However, you can still sell in-app products and subscriptions through Google Play's In-app Billing service. If you publish your app as a priced app, you can change it at any time to be a free app (but cannot then change it back to priced). You can also sell in-app products and subscriptions. If your app is be priced, or if you'll be selling in-app products, you need to set up a Google payments merchant account before you can publish.

查看更多
走好不送
4楼-- · 2020-03-02 03:57

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'.

查看更多
【Aperson】
5楼-- · 2020-03-02 04:08

I feel the most easy way is to use theese line of codes

This gives you the old version code

SharedPreferences prefs = getSharedPreferences("Name_of_Prefs", MODE_PRIVATE);
int oldVersionCode = prefs.getInt("version_code", -1);

This gives you the current version code

int currentVersionCode = getPackageManager().getPackageInfo(getPackageName(),0).versionCode;

Now you can compare and do what you want. Don't forget to update after every time with this line of code

prefs.edit().putInt(PREF_VERSION_CODE_KEY, currentVersionCode).commit();
查看更多
We Are One
6楼-- · 2020-03-02 04:12

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)

查看更多
登录 后发表回答