5

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.

Magnus
  • 17,157
  • 19
  • 104
  • 189

1 Answers1

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...

Magnus
  • 17,157
  • 19
  • 104
  • 189
  • 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 :) – Jules Jun 29 '23 at 20:06
  • 1
    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. – Magnus Jul 01 '23 at 10:49
  • 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. – Jules Jul 03 '23 at 08:09
  • 1
    @Jules 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. – Magnus Jul 04 '23 at 07:00