Detect if free app has been purchased for money - android

We are planning on changing our currently paid app, into a "free" (demo) app with in-app purchase to unlock the full game.
Our problem with making this transition is that we already have customers who've paid for the app. We therefore need to ensure that they wont have to pay for something they've already bought once. We have looked for every possible solution we can think of, but without luck.
Licensing is out of the question, as it will always return valid for free apps.
Any suggestions will be greatly appreciated. As a fallback we'll have to create two apps, but we would much rather prefer to only keep a single one.
Regards
Jannek
Edit:
Thanks for the feedback. We didn't find a solution, but ended up using the first achievement to unlock the game by default. this covers 80% of our players. Unfortunately also 80% of the pirates. for the remaining 20% we setup a token server, where they can unlock the game by entering the last 8 digits from their purchase info.
This also allows us to give out promo codes on Google Play.

A couple of unsatisfying solutions:
Update the app before you make it free. Collect IDs somehow of people who use it and record them. Downside is it will miss people that rarely update or use your app.
Release the paid app as a new package. Convert the old one into a "pre-paid licence". You can detect whether the licence app is installed or not from the new one. Downside is you lose all your ratings and reviews.

Related

About uploading app to Play Store

I have two questions about uploading app to play store. First of all I want to upload two versions of my app, the first one is free with adds and the second one is paid without any adds, but is the same app in both cases.
What should I do to upload both apps? I had thought about changing the package name but the problem I think I will have is that if the user downloads the free version and then pays for the premium he will have both applications in his smartphone, the premium won't override the free one.
And this question is more about your experience uploading apps. I have mine in english, spanish and french. I had thought in uploading the app in every country but in the videos I have seen everyone chooses a few countries to upload their own apps. What do you recommend me to do?
Thank you in advance.
There are a few ways you can handle it, though I have to say I'm not sure you should.
My suggestion is to upload your free version first, and later when you have enough users implement in app billing instead.
I know it's not directly answering your question, but I think it's a better approach that will save you a lot of time, and also be a better experience to the users.
Regarding countries, you don't need to upload it to each country, that's automatic (unless you indicate otherwise), and you actually can't upload or create a specific store listing by country, at least as far as I know.
You do need to create a store listing to the languages you want, otherwise they'll get the default language and in some cases see automatic translated listing, which is quite bad in my opinion.
You should have only one app, which is free to download, and implement an in-app payment in that app through which a user can choose to make a payment in exchange for the removal of ads, without the need to download a separate ad-free app. This is the standard approach to the problem you have described.
If you implement separate apps, your ratings will be spread across both apps, to the probable detriment of the rankings of both in the Play store's search results. Also, an upgrade to the ad-free version will require the user to download the paid version, which creates a barrier to selling it. Finally, once a user who has tried the free app decided to pay for removal of ads, they would almost certainly uninstall the free version, which might cause the store to see that app as being unsatisfactory to your users.

How to migrate from paid app to in-app-purchases?

I would like to migrate my app from a free/paid scheme to a free app with in-app-purchases.
I will be using the old free app, as the new free app with the in-app purchases, and I am looking for a way to make this transition.
How can I achieve this?
Is it possible with Google Play Licensing to retrieve the licensing information about another app still owned by the same developer account? Or you can only retrieve licensing information about the current app?
Otherwise, which other ways there could be to recognize a user being the owner of the paid app?
This is not possible due to potential ways to exploit the workings of the Google Play store (potentially skewing download counts, and such; a free app is more likely to get downloads, and those will boost its rankings before you make it cost money).
This has been asked before, and the consensus is that it's not possible by design. There are a few solutions in that thread, such as:
Make your app free, last one week, then have the user use in-app purchasing to continue using it. (Not sure if this is exactly what you hoped, but it's a potential way of monetizing regardless.)
Put up a free version, and take it down in a week. Users will have to reinstall the app to get the paid version but this would still have the same desired effect.
Do an update (or have a setting in your app that expires at a certain time) to remove the paid features after a week (this might tick off a lot of users, though).
Sadly, as I said, this is not possible, so you'll just have to work around it best you can.
Even the original question was asked long ago it is up-to-date for me now :)
I think about allowing paid features in the free app in case the (old) paid app is still present in the phone. You can check this using PackageManager.

How can I tell if a user bought my app

I sell a game on Google Play called Quantum-X. Not many people have bought it so I want to move to an ad-supported model and make it a free download.
But I want to reward the people who did buy the game by disabling advertising. So existing users see no ads, new users see ads. I can store a flag in some obfuscated, device specific way which makes this determination.
But in order to this I need to tell the difference between paying and non paying users.
So how do I do this? I have a few ideas but I don't know if any of them are viable:
The old app wrote some preferences out. I could look for an old preference and set the flag. But this will not work if someone installs the app on a clean device since they won't have that preference. It is also an exploit since anybody could put the old key in to fool my app into disabling advertising.
My pay app currently uses LVL to validate a person's licence. If I make my app free, what happens when I call LVL? Does it respond LICENCED even if a user downloaded it for nothing? If I could tell paid from non-paying users from the response then I know how to set the flag. But LVL is a pain to test since I would have to upload the app, set it to free and then see what difference there is in the result and there may be none.
I could produce one final update of my pay app which sets the flag and asks users to upgrade. Then I could roll out the app free in a month from now. The same problem exists as with 1. that some users may not update or may install onto clean devices.
I could produce two apps on the store. The pay app could be renamed to "Quantum-X legacy" and a new Quantum-X goes in its place which is free. I would update the legacy version to install the flag, but people would have to switch to the new version for continued support. This would work but it's a lot more effort.
None of these are pretty although 2. would be the least amount of work. Has anyone experience of a working solution, or know a some better way of doing this?
EDIT: My intention is now a hybrid and I've begun to do this:
Rename the old app as Quantum-X Legacy and update the description.
The new free version is called Quantum-X. The only fly in the ointment here is that I must update the app package in the manifest to make the two apps distinct.
I intend to put a test into the free version that calls LVL using the old app's key. If this works the way I think it will, it will tell me when a user has bought the old app (since the licence server is being asked about the old app), and I can write out an obfuscated flag somewhere so I don't have to call LVL any more.
Free users carry on but with ads.
I'm up to 3. and this is my intention. If LVL doesn't work, then I might have to put out an update to the legacy version which writes the flag or puts a code out on screen that someone must use to enable adfree when they install the other version.

Transitioning from free to paid, database

I have a simple database driven app. I'm looking to offer a free and paid version. The only limitation in the free version, is that you're limited to adding 10 records per month.
What is the best way to handle upgrading from free to paid, while maintaining the database?
I had planned on using in-app billing to unlock the ability to store unlimited records/month but I think that is probably beyond complicated for my simple app.
Other ideas were to sell an unlocker app... I don't know if people get confused by this concept though or not.
I could always write the free db to an sd card and have the paid app copy it. But a concern is people without sd cards and it just seems like something would go wrong and somebody would lose their data.
Any thoughts on this?
If you don't want to use in-app billing then you need two separate packages, free/paid or free/unlocker. IMHO free/unlocker is far more convenient than the free/paid. In you choose free/paid you will end with two copies of the same app and you are going to have problems like the one you mention with the databases.
Android LVL is a no go in this case, you can use it to check licence and enable/disable the 10 records per month restriction, but you are limited to one package (meaning you will have the paid apk in the android market but for the "free" version you need to distrubute the application by your own).
I think PowerAMP offers a good solution. They have a free app that acts as a trial of their product and when the trial period ends, they show a dialog with a link to the unlocker app in the android market. You can use the same strategy, when a user tries to enter more than 10 records/month show them an alert with a link to the unlocker app. I think this should solve your concern about people getting confused.

What if I change my Android App price to free and after i change idea?

I have read on the market support that "If you have previously published an application for free, you cannot change it to have a price."
But I was wondering, if at the contrary I change my app from payed to free and after some time I want to re change it from free to payed! Can I? And if yes, do I have to wait some period (I have read something like this in the contract)?
Tnk's
Valerio From Italy
You can change your app from paid to free, but the moment it's free, you can no longer start charging for it. It's a one-way street.
Why not just have two versions? One free and one paid. Then just post the version you want available and remove the other one.
As Daniel said, it's a one way thing.
If you do find yourself wanting to be able to charge again for some reason, it would be best to put adverts in (somewhere unobtrusive, I personally hate apps that try to trick you into clicking) and then publishing a second paid 'unlock' app. This app need to nothing other than exist, and the main app can check if it's installed using the Package Manager.
Alternatively you could lock out any future features using the same unlock idea. I wouldn't recommend locking out currently available features in this way however, as it looks bad, will upset your customers, and is quite possibly against the terms of the Android market.
Another consideration here is the users that already paid for it. I tackled this by making the app do a little more and have it check a list of users that I pulled from my purchase transactions.

Categories

Resources