Migrating paid app to In App Purchase on Google Play
Asked Answered
C

1

6

There are a lot of old questions and answers from many, many years back about the topic of migrating an existing paid app to a freemium model using in app purchases, but they all just state the same limited workarounds.

So is there an official way to do this in 2019? Or at least a method that avoids the usual pitfalls, like

Negative impact on user experience

  • asking existing (paid) users to purchase a $0 IAP
  • asking existing (paid) users to purchase an IAP using a promo code

Will eventually fail when the user buys a new device

  • keep track of which devices had the paid app installed either by sending a device identifier to a server or by storing a flag in SharedPreferences

There are other equally flawed methods as well which aren't even worth mentioning. The correct and easy fix would of course be a simple API call to Google Play Services:

bool legacyPremiumUser = didUserEverPurchaseThisApp();

Does anything like this exist today? Even just a way to identify a user across devices would be acceptable.

Compress answered 18/6, 2019 at 19:32 Comment(0)
C
5

Since there has been no answer for over a year, I might as well post my own.

I ended up doing some kind of mishmash of

  • detecting settings that were only available in the paid app
  • letting the user sign in with their Google account in the old paid version, before migrating to subscriptions. They can then restore their "legacy premium status" (i.e. bypass subscriptions) by signing in with the same Google account in the new subscription based version.
  • letting users who didn't sign in with their Google account in the old paid version verify their Google Play order number (which I've downloaded and compiled into a database on a server, where they can be checked by a HTTP call).

If all else fails, they can contact me manually by email or an in-app feedback form and I'll try to find their purchase in Google Play order management and/or just take their word for it and unlock legacy premium for their Google account manually.

It's far from perfect, but it beats asking legacy customers to pay again.. and again, and again...

Compress answered 26/10, 2020 at 21:6 Comment(8)
Thanks for sharing your thoughts. In the scenarios, were you only able to unlock the application locally by bypassing the IAP on the device, or were you able to unlock the IAP for the user without them having to pay again? I'm asking because otherwise the user would have to enter the order number on all his devices, for example, or even when they reinstalls the app if the IAP doesn't know about the manual activation. If so, how can you do an IAP transaction without money involved? THANK you :)Demesne
I ended up using a third option - if a user had not already registered with their Google account, I strongly encourage them to do that after using their order number to unlock the legacy purchase. So far it's been working good, although I have had to assist a few users and find their order numbers in Google Play order management, but those cases have become fewer and fewer it seems.Compress
Thank you very much for the feedback. That sounds like a solution that should work. My problem is that we don't really want to have "accounts" or logins. One idea was to use the "License Verification Library" to find out that the app was purchased before the conversion to freemium. But as nice as it would be, and as I understand it, you can't really find out the type of purchase, especially if the app is freemium, you can't figure out if it's purchased or just downloaded using this lib. It's really sad that you have so few options when it comes to this topic.Demesne
@Demesne My app doesn't actually use accounts or logins either. The Google Sign In is only used to "register" that the user has paid for the app. It simply stores a user id on the server which can then be used as an "unlock" mechanism for people who paid for the app before we made it subscription-based instead of paid. The login serves no other purpose, not even to store any user settings.Compress
@Compress thx for all the tips, nonetheless these methods won't really work if you have a lot of users - firstly, any pre-migration update asking users to Google Sign won't ever reach 100% users, maybe like 70-80% if you're lucky and wait few months. Good portion of users update sporadically...Secondly, enough people flat out refuse to use Google Sign in, and you might even get bad reviews. So at the end, if your app has ~thousands of purchases, migrating from PAID do IAP will be a major pain and results in tons of angry customers, months of tech support & fair amount of bad reviews...Liquesce
@Compress so the question is, is it worth it? Just curious - what was your user base (paying customers) and how much did you actually improve your conversion from free->paid? I'd love to hear some numbers :) Thanks a lot!Liquesce
@Liquesce Definitely worth it in my case. Now I offer three different pricing options - 1 month, 1 year or lifetime (lifetime is an in app purchase, approx 5x yearly subscription). If I had only the "buy before installing" option, I think most people would not want to pay what it actually costs to run things. Devloping, maintaining and supporting an app is not a one-time activity, so it only makes sense to use some form of recurring revenue. Unlike many physical goods, an app doesn't break so customers have to buy a new one every 5 years... hopefully :)Compress
When you use LVL API, you can get a user ID (a pseudo anonymous ID that is unique to the Google Play User / App combo). This returns the same value before and after the app is made free. So before the app is made free, you can store the license result against that ID (on some remote server you control), and then, once the app is made free, retrieve the license result from the server instead of the LVL API. You still need to use the LVL API but only to get the user ID. https://mcmap.net/q/1779099/-will-android-lvl-licensing-still-work-after-converting-from-paid-to-free-appAudacity

© 2022 - 2024 — McMap. All rights reserved.