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

Mag*_*s W 6 android in-app-purchase android-lvl google-play google-play-services

很多年前就有很多关于将现有付费应用程序迁移到使用应用程序内购买的免费增值模式的主题的老问题和答案,但它们都只是陈述了相同的有限解决方法。

那么2019年有官方的方法可以做到这一点吗?或者至少是一种避免常见陷阱的方法,例如

对用户体验的负面影响

  • 要求现有(付费)用户购买 0 美元的 IAP
  • 要求现有(付费)用户使用促销代码购买 IAP

当用户购买新设备时最终会失败

  • 通过向服务器发送设备标识符或在其中存储标志来跟踪哪些设备安装了付费应用程序SharedPreferences

还有其他同样有缺陷的方法,甚至不值得一提。正确且简单的修复当然是对 Google Play 服务的简单 API 调用:

bool legacyPremiumUser = didUserEverPurchaseThisApp();
Run Code Online (Sandbox Code Playgroud)

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

Mag*_*s W 5

由于一年多来都没有答案,我不妨发布自己的答案。

我最终做了一些混杂的事情

  • 检测仅在付费应用程序中可用的设置
  • 让用户在迁移到订阅之前使用旧付费版本中的 Google 帐户登录。然后,他们可以通过在新的基于订阅的版本中使用相同的 Google 帐户登录来恢复其“旧版高级状态”(即绕过订阅)。
  • 让未在旧付费版本中使用 Google 帐户登录的用户验证他们的 Google Play 订单号(我已将其下载并编译到服务器上的数据库中,可以通过 HTTP 调用进行检查)。

如果一切都失败了,他们可以通过电子邮件或应用内反馈表手动联系我,我会尝试在 Google Play 订单管理中找到他们购买的商品和/或相信他们的话并为其 Google 帐户解锁旧版高级版手动。

它远非完美,但它胜过要求传统客户一次又一次地付款……一次又一次……