How to prevent some users from upgrading application from Android market?

Viewed 578

We have an application, that can itself be downloaded for free, but works with paid, licensed data. Some users buy particular version of the data while others buy right to use latest data for some period of time. Now as the application evolves, it eventually stops supporting data older than some date. So obviously users who have those data licensed, but no license for newer data don't want to upgrade. But if we publish new version on the market, they would see it and if they upgrade, they will have trouble downgrading back to version that actually works for them.

So can we somehow instruct the market application not to offer upgrades for particular user or some hack to achieve that end?

We currently use mechanism completely independent on the market to sell and check licenses for the data, but could consider different mechanism (like the android in-app billing support or something) if it could help solving the problem.

6 Answers

Ok.. I saw one of the posters suggest you have a way to read the old data.
First that's likely the best option but as you say your apps a mess. You should invest some time in migrating your data reading/writing to an abstraction layer. The pain your having on a (likely less than 4 year old project) is only going to get worse.

Okay.. so here's how I've dealt with it in long lived apps..

Create a migration path.. Create a new class call Migrate. In it have several functions to convert the version of the file from n to n-1 convert_1_to_2(fileName){check the version and upgrade data.) convert_2_to_3(fileName)...

I suspect you have your old code, and you could write a method to convert one bit of data to the next.. When you add new features to the data, then you create a new convert.. No knowledge of the earlier ones would be needed, and everything would be nice and self contained. You could even have sub migrations, so part way along the dev cycle, you could have convert_3a_to_3b.

Now... you could archive the original version of the data in case the user wants to go back.

Related