Reputation: 4874
I currently have two versions of my app in the Android market, a paid one and a free one. But I want to integrate in-app billing into my free application, and charge customers on a subscription base, for a lower price than the current price of the paid app.
But how should I handle this for existing customers? It seems unfair to let them pay again for use of the paid functionality, while they were the early adopters of my application. Ideally I implement something that will give the existing users access to the unlocked functionality in my free application.
Any ideas of how to accomplish this? An outline of a good approach to take is enough, I don't mind to do some research on how to actually implement such an approach.
Upvotes: 18
Views: 1564
Reputation: 39593
Release a separate free version of your app; use the paid version as if it were a license key to the free version.
PackageManager manager = getPackageManager();
if (manager.checkSignatures("old.package.name", "new.package.name")
== PackageManager.SIGNATURE_MATCH) {
//full version
}
Upvotes: 4
Reputation: 15615
You could retain both your paid and your free / IAB versions, but base them both on the same library project so that you'd have only one set of source files to maintain. The library project could unlock all features presently available to your paid users for the paid version (activated, say, by testing the package name of the app), and unlock those same features for the free version only when payment had been made via IAB.
This would also allow you to charge users of the paid version for additional features beyond the ones that were present when they paid for the app, if you were to add some truly significant features in the future and wanted to charge an additional amount for those.
It would also have the advantage that your present paid users would not have to do anything at all; to them it would appear that no change had occurred. In particular, they would not have to install your free / IAB app, or go through any special authorization procedures.
The disadvantage would be that you would have to build and upload two projects for every release. This could, however, be partially automated.
Upvotes: 3
Reputation: 591
Example:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
if(oldVersion != 0 and oldVersion <= 34){
appConf.unlockAllFeatures()
}
}
Upvotes: 1
Reputation: 5917
Correct me if I understood incorrectly. You have mentioned about subscribing which means user details + database + additional information?
if your app does not have database or anything to hold user records. I would suggest to release an update to paid app and enable sharedpreference or common ini file. use the free app to read the same sharedpreferenece file or your own ini file to read the settings.
going for database will help you in the future for more customer relationship activities.
Upvotes: 0
Reputation: 3683
Android dev web site covers this pretty well.
http://developer.android.com/guide/market/billing/index.html
Upvotes: -1