Question

I currently have two versions of an application - a free version with ads and a paid version with no ads. I've had a ton of requests from users to ease the transition from the free version to the paid version, and I'd really like to do that.

One way of doing it is to simply remove the free version, make the paid version free and then add in-app purchasing to remove ads.

My only concern is this: How will I be able to determine which of my users have previously purchased the application? Is it possible to do with Google Play licensing?

Was it helpful?

Solution

There's really no need to remove the paid version (or convert it to free) in order to obtain a free version with IAB, and there are some good reasons to retain the paid version as a separate app from your free one.

One reason is that, depending upon which versions of Android your app supports, as much as ten percent of all devices may not support in-app payments (e.g., because they have an older version of Android Market that does not auto-update and does not support IAB3). That provides an argument for keeping the paid version around.

Also, if a user installs your free app to a device that does not support IAB3, then you can have your app detect that and provide a link to the paid version for them to install as an alternate (to IAB3) upgrade path when they signal to the app that they are ready to upgrade.

And, of course, if you do keep the paid version around, you'll have no problem distinguishing users who have already paid from those who have not.

If you decide to retain your paid version, then you can just add in-app billing to your free version to enable the upgrade to your paid feature set. That will satisfy those users who are looking for an upgrade path that is less disruptive than uninstalling the free app and installing the paid one.

If you have not already done so, you'll probably want to create a project library to hold most of your apps' capabilities, to be shared between your free and your paid versions. You might end up converting your paid project to that very library, and then creating two projects, paid and free, which use that library. If one of your motives for combining both versions into a single free one is concern about maintaining two apps, using a project library could reduce that overhead significantly, although it will not be zero.

In that regard, I have found it useful to create an activity in each of the apps that uses such a project library, which inherits from the main activity in the project library. That main project library activity can be an abstract class, with certain methods to be provided by the activity classes that inherit from it in the APK-generating projects that use it; or, certain methods can just be defaulted in an innocuous manner (rather than defined as abstract) and then overridden in the derived classes within the respective projects. These overrides can be used to tailor the behavior of the project library to the requirements of the specific app (e.g., free vs. paid) that is using it. You can also override pre-defined methods like onCreate(), onResume() and so on to accomplish these same ends of differentiating behavior between the respective (e.g., free vs. paid) apps.

Finally, I would not worry too much about splitting your installs between two APKs, because the free version will probably get the lion's share of those simply due to the ease with which it can be installed and tried, so long as the IAB upgrade process is seamless.

OTHER TIPS

It may be worth noting you can't make the paid version free, it will always have a price tag.

My suggestion would be to add IAB to the free version so users can upgrade from within the app. You can also add a check to look for the package name of your paid version being installed on the device. If you find it, then you can unlock the feature in the free version without the need for the user to purchase the upgrade, as you know they have the paid version installed.

The only problem is, whilst you can persist the flag for the paid version being installed, if they setup on a new device or factory reset for example, when they put the free version on, the flag for pro version is gone and the paid package won't be installed, so they will be prompted to pay to upgrade again. There is no real way to resolve this.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top