Changing the paid Android application for free use in the Billing application - the grandfather of existing customers

I have a paid app on Google Play today and I want to upgrade to the free app with 3 in-app purchases. The problem is how to “give back” the In-App purchase to existing customers already paid for the application.

I just had a thought - can a license do the trick?

The existing paid application uses Google licensing, but this is no longer needed when all the features are purchased as In-App purchases - right? Thus, all existing customers have a license, and all new customers do not need it.

Is it possible to check the license, and if it detects, will give the user access to the same functions as 3 In-App purchases, will give access to?

+9
android in-app-billing
source share
2 answers

As far as I know, there is no good way to provide the user with a free in-app purchase when the purchase is not yet free (for example, through a coupon).

Some possible ways to do this are discussed in How to use the paid version of my application as a “key” for the free version?

One way to do this is to have a code that checks for the presence of "obsolete users" (those who have an old paid application installed), and set a preference on their device that designates them as paid applications.

You will have problems if the user switches the phones or removes them and then closes your application again. You can get around this by adding a second set of products for applications for obsolete users, which are free, but are offered only to those who have the old application installed. After they buy the free versions, they can remove the old application. Then, when you check the purchased products, you check either the legacy or the new product.

+2
source share

I think you can do something like this to make sure that the "pro" application is accessible and signed with the same signature.

public boolean isProAppPresent() { try { PackageInfo info = context.getPackageManager().getPackageInfo("xxxpro", PackageManager.GET_META_DATA); Log.d(TAG, "Pro app is installed: " + info.applicationInfo.name); return context.getPackageManager().checkSignatures("xxx", "xxxpro") == PackageManager.SIGNATURE_MATCH; } catch (NameNotFoundException e) { return false; } } 

This is easy to do, but I'm not sure if this is a complete defense.

+1
source share

All Articles