Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Offer free features to earlier buyers

I have a paid app in the Google Play Store. I'm considering reducing the price of that app (somewhat; not all the way to free) and offering one of the features as a separate in-app purchase.

If I did that, I wouldn't want to yank the feature away from anybody who's already bought it.

Is there any way to figure out either the date that the user bought my app, or the original version of the app that they bought, or something like that? I'd like to say something like, "If the app was before the price change (either by date or by version), they should have the feature for free; otherwise, require IAP to unlock the feature."

For example, iOS does have a feature like this; the app receipt includes an "originalVersion" field which can be used to control access to features.

like image 784
Dan Fabulich Avatar asked Aug 31 '15 04:08

Dan Fabulich


People also ask

What stage of the buyer's journey is your audience in if they are choosing a free trial?

Decision stage content examples There are three reliable content types for the decision stage of the buyer's journey. They are – Live demo / free trial, consultation offer, and coupon. A product demo is a great way to show your prospect how your product or service works.

What is buyer persona examples?

Most businesses have multiple buyer personas, with each one describing in detail what drives them to buy their product or service. For example, the person's age, location, job title, goals, and challenges they face.


1 Answers


Unfortunately for your customers, this is impossible. There is no API call or anything else to Google Play where you can get the time on which the app was bought.

I know there is an android-publisher API in existance, however it doesn't offer any feature to check that.

The functions you want to use are not public availible and only used by the Playstore internally!




Workarounds which you could do:

1. Get the time the app was installed

On the first start you could check that and unlock the features.

Warning: This system could be abused by changing the time on the device

long installed = context
.getPackageManager()
.getPackageInfo(context.getPackag‌​eName(), 0)
.firstInstallTime;


2. Give users free keys

You could give every user who's using the app atm a free key via mail or push notification


3. Unlock the inapp purchase now

Publish an app update which unlocks the inapp purchase for free. After a few weeks you could pusblish your new version with the lower price and just unlock the features as if your current customers had bought your extension.

You might be able to hack your way around this if you're using some sort of persistent storage.

For SharedPreferences, on the first run, do a check for one of your preferences using SharedPreferences.contains(). If it contains it, the app must have already been installed. If not, set another preference that marks the user as new, and set yet one more so it doesn't do the check every time.

That might only work if the preference doesn't have a "default" value, I'm not entirely sure if setting a default in xml will mark it as contained.

You could do something similar if you have any assets that get transferred to SD, or any similar one-time setup. Just check to see if it's already done before doing it the first time.

If you're using an SQLite DB, you could increment the DB version and mark as "paid" in onUpgrade() if coming from the current version(or earlier).

There are some pitfalls here, though. For instance, if a previous paid customer completely uninstalls before installing the new version, or if it's on a new device. For that reason you should:


4. Provide Support

In the about or FAQ section of your app and on first run of your new version set a support mail adress which customers can use if they have any problems because the new features were not unlocked for them.

They could provide any proof (bill) for their purchase.




Like I said, those ideas are workarounds, but I don't know of any "official" way to check to see an app install is an upgrade or an initial install.

Your best option may be a combination of those four.




FYI: I've opened a feature request/idea in Google Cloud Connect for work which you could vote: https://connect.googleforwork.com/ideas/9392 (You can only vote if you have a paid Google Buisiness Account)


I hope this helps you at least a bit.

like image 68
Sebastian Schneider Avatar answered Oct 21 '22 08:10

Sebastian Schneider