android - 将 google play/apple store 自动续订订阅与内部帐户同步的预期行为是什么?
问题描述
我们目前正在为 Google 实施自动续订订阅(我们从 Apple 的非续订开始,并在服务器端实施了重复数据删除和验证流程),目前的主要问题是以下情况:
- 用户在 Google Play 中拥有Google 帐户 A ,在应用程序中拥有内部帐户 A
- 用户购买自动续订订阅。(它现在绑定到内部帐户 A)
- 他从内部 A退出并登录到内部 B
所以问题是Internal B的预期状态应该是什么?基本上,游戏市场(因此是 Google BillingClient)将拥有有关订阅的信息,因为它与 Google 帐户相关联,但我们预计订阅仅对 1 个内部帐户有效(无论如何这将是因为重复数据删除过程)。但是在这种情况下,用户会遇到一种奇怪的情况,即之前已经购买了订阅(当他使用帐户 A 登录时),但没有生效,因此他无法为内部帐户 B购买。
我试图在以下链接下找到答案,但看起来他们对这种情况并没有很好的描述:https ://developer.android.com/google/play/billing/billing_subscriptions
在我看来,我们应该为这种情况提供一些用户体验,例如:“看起来你已经订阅了,但你的帐户有误”。但是,如果有人能回答这个关于谷歌/苹果审查团队在这种情况下的期望的问题,我将不胜感激。
解决方案
如果您查看其他大型订阅应用程序,例如 Netflix 或 Spotify,您可以了解他们如何管理这些应用程序的一些 UI 想法。如果内部帐户 A在 iOS 上订阅,然后在 Android 上登录,您可以在 UI 中显示订阅是通过 iTunes 计费和管理的。
在您描述的情况下,如果内部帐户 B登录,则预期的 UI 将处于“未订阅”状态。有几个边缘情况需要考虑:
如果内部帐户 B尝试从已购买的设备购买订阅,则会出现订阅已处于活动状态的错误。
确保内部帐户 B无法恢复对内部帐户 A购买的收据的购买。
在RevenueCat,我们将收据文件和原始交易 ID 存储在进行原始购买的用户记录中,这样我们就可以检测其他用户是否正在尝试恢复相同的购买(通过原始交易 ID)。
就政策而言。唯一的官方政策是用户需要一种方法来恢复以前购买的订阅。如果他们可以通过简单地登录Internal Account来进行恢复,那么这就足够了。您想如何处理“应用商店帐户共享”的情况取决于您。与移动订阅的大多数事情一样,这是开发复杂性与风险的权衡。
推荐阅读
- angular - angular4 *ngFor 多个过滤器不起作用
- r - 如何根据 R 中的特定长度设置名称
- python - 完全自定义 django 管理站点
- eclipse - 将配置文件从Tomcat复制到项目目录时出错:目录无效/opt/tomcat/conf/Catalina
- apache - 在具有多个后端的 apache 反向代理中请求需要很长时间
- mysql - 如果为 Null mysql,则获取带有计数的组名
- python - Django 每个模型都必须有一个 date_created 和 date_modified 字段
- python - 配置 Anaconda 代理适用于 conda 而不适用于 pip
- r - 使用 gganimate 时小提琴图的定位
- python - 如何在 django 的表单中检索以前输入的数据?