Android 在Google Play上将付费应用迁移到应用内购买

Android 在Google Play上将付费应用迁移到应用内购买,android,google-play,in-app-purchase,google-play-services,android-lvl,Android,Google Play,In App Purchase,Google Play Services,Android Lvl,关于使用应用内购买将现有付费应用迁移到freemium模式的话题,很多年前就有很多老问题和答案,但它们都只是说明了相同的有限解决方法 那么,2019年是否有正式的方式来实现这一目标?或者至少是一种避免常见陷阱的方法,比如 对用户体验的负面影响 要求现有(付费)用户购买$0 IAP 要求现有(付费)用户使用促销代码购买IAP 当用户购买新设备时,最终将失败 通过向服务器发送设备标识符或在SharedReferences 还有其他同样有缺陷的方法,甚至不值得一提。正确且简单的修复方法当然是对

关于使用应用内购买将现有付费应用迁移到freemium模式的话题,很多年前就有很多老问题和答案,但它们都只是说明了相同的有限解决方法

那么,2019年是否有正式的方式来实现这一目标?或者至少是一种避免常见陷阱的方法,比如

对用户体验的负面影响

  • 要求现有(付费)用户购买$0 IAP
  • 要求现有(付费)用户使用促销代码购买IAP
当用户购买新设备时,最终将失败

  • 通过向服务器发送设备标识符或在
    SharedReferences
还有其他同样有缺陷的方法,甚至不值得一提。正确且简单的修复方法当然是对Google Play服务的简单API调用:

bool legacyPremiumUser = didUserEverPurchaseThisApp();

像这样的东西今天存在吗?即使只是一种跨设备识别用户的方法也是可以接受的

既然已经有一年多没有答案了,我还是发我自己的吧

我最后做了一些杂七杂八的事情

  • 检测仅在付费应用程序中可用的设置
  • 在迁移到订阅之前,允许用户以旧的付费版本使用其Google帐户登录。然后,他们可以通过在新的基于订阅的版本中使用相同的Google帐户登录来恢复其“传统高级状态”(即绕过订阅)
  • 让那些在旧付费版本中没有使用Google帐户登录的用户验证他们的Google Play订单号(我已经下载并编译到服务器上的数据库中,可以通过HTTP调用进行检查)
如果其他一切都失败了,他们可以通过电子邮件或应用程序内反馈表手动与我联系,我将尝试在Google Play order management中查找他们的购买,和/或只是相信他们的话,并手动解锁他们Google帐户的legacy premium

这远非完美,但总比要求传统客户再次付款要好。。一次又一次