6

I currently have an Android app which is distributed as two applications an Ad supported version and an ad-free version. The Ad-Supported version has over 10,000 users and the Ad-Free version has a couple of hundred. Currently both projects are completely independent making updates a fairly tedious task. Ideally I would like to just updated one project and build be able to build both versions. After looking online it seems I have two options:

  1. Make a library containing most of the class files and then just extend this for the two versions (changing only the files that are different). As the project is fairly big this may be a large task and may cause some serious headaches.

  2. Just release one version and use in-app purchases to remove the ads. This seems the easiest route but how do I allow my existing ad-free users to remove the ads via in-app purchase without paying?

Hopefully someone has been in a similar predicament before and can point me in the right direction.

bencallis
  • 3,478
  • 4
  • 32
  • 58

3 Answers3

2

Where I used to work we had the 2nd option. It helped us a lot since you just need to maintain 1 code/app/apk. In your case, I suggest you to do the same thing.

In order to migrate all your users to a single App, you can give a random code (generated with the email they are using and an algorithm to create it) via your "Ad-Free version" app. Then, in your All-in-one app you can ask for that code or activate the "In-App-workflow" in order to remove all Ads.

Edit:

Check this link: How to get the Android device's primary e-mail address

Community
  • 1
  • 1
gian1200
  • 3,670
  • 2
  • 30
  • 59
  • If I gave the existing users a code how would I ensure that only they use it? Check their email address and and code in the new app? – bencallis Sep 06 '13 at 20:55
  • Yes. You can ask for their emails and/or check it through the Android API to retrieve they email account. If I'm not wrong you need to use AccountManager class and ask for the `permission GET_ACCOUNTS`. I found and interesting post on SO. I will edit my answer – gian1200 Sep 07 '13 at 04:03
  • Have you used this before? It seems the account names are not always email addresses, in the cases that they are not what are they? – bencallis Sep 07 '13 at 12:24
  • No, I haven't. It was something I came up with while writing the answer. If you can't get the email, there must be a unique ID. I didn't know you can download apps from Google Play without signing in. If that doesn't work you can do the easiest thing: ask the email to the user in order to migrate his/her account to the new app and generate the random code I talked about in my answer. – gian1200 Sep 10 '13 at 03:09
1

I am always recommend SO user to used android inapp purchase.

Benefits:

1) Easily track manage your playstore user.

2) If updation require then update code on one place.

3) Secure payment with google policy.

4) many more feature.

@bencallis as per your question i recommend to you option 2 is better.

if you require any inapp information then put comment.

Harshid
  • 5,701
  • 4
  • 37
  • 50
0

You're in a similar boat with me, though I've taken one step already.

I made an app for a small group of people that are close to me, free and ad-free, and released it. I then created another app for a wider group of people, free but with ads. The two applications were almost the same, except a few things that had to be app-specific (like strings, resources, and a few variables). After getting frustrated with updating both of them, I decided to go with the library approach. It might give you headaches in the beginning, but it will truly cut down on your updating. You'll only have to update the library file, then just compile and check the actual application.

Because of how you describe your situation, I think you'll have an easier time than me. Turn one of your applications (probably the ad-free one) into a library, then in the ad-supported version simply overwrite the layouts that show the ads.

I can't suggest your second option, only because, as far as I know, there is no way to do what you want.

gatlingxyz
  • 781
  • 6
  • 12
  • Is there any guides for doing this anywhere? What happens with the manifest file and default package etc? – bencallis Sep 05 '13 at 23:36