iOS和Firebase自动续订订阅

问题描述 投票:1回答:1

我的问题:

我很难找到一种方法来安全地管理iOS中使用Firebase的自动续订订阅。

购买流程:

  1. User1购买订阅 使用订阅标识符更新User1在Firebase上的帐户(用于解锁内容) 使用User1的uid存储original_transaciton_identifier(OTI)以匹配来自Apple的收据验证。 授予用户访问权限

边缘情况导致我的大脑崩溃:

  1. User1退出用于购买订阅的AppleId,但仍保持登录到具有Firestore凭据的应用程序。 因此,当我去验证订阅是否已过期时,它不会返回有效的订阅。我希望用户能够保持访问权限,直到它过期或取消。实现这一目标的任何提示?
  2. User2登录到User1之前使用的同一设备。 因此,两个用户都使用相同的AppleId。我可以检查当前用户是否有订阅,并检查OTI以查看它是否与User2相对应...它不会。 我们将显示“购买iAP”屏幕,但是如果该用户想要在同一AppleId下购买订阅该怎么办?我处理这句话是否正常,“Apple Id已经与另一个帐户连接了什么”?

我找到的相关文章:

How to tie auto-renewable subscriptions to in house user, not appled id

我一直在努力解决这个问题,但却找不到很多资源。所有帮助表示赞赏。

ios firebase in-app-purchase in-app-subscription
1个回答
6
投票

对于案例#1:

当您尝试访问收据时,Apple将触发登录提示,以便用户输入其iTunes凭据。如果收据仍然不可用,您将无法验证订阅状态。执行此操作的“正确”方法是将整个收据存储在您的服务器上,并使用/verifyReceipt定期刷新它。您将检查订阅是否已取消,并更新expiration_date,以便您知道何时切断用户的访问权限。

对于案例#2:

我处理这句话是否正常,“Apple Id已经与另一个帐户连接了什么”?

是!如果您能够查看其他大型订阅应用程序如何处理此问题(Netflix,Spotify,HBO等) - 它与您描述的类似。如果您在服务器上维护订阅状态(如#1中所述),则只有在用户尝试“恢复购买”时才会发生这种情况,而不是每次都在本地检查收据。

这是一个非常极端的边缘情况,因为没有多少人尝试在他们的朋友手机上进行购买,并且在大多数情况下需要TouchID / FaceID - 因此它更像是防欺诈功能。一旦您获得了数百万用户,您就可以获得想象力并向他们发送自动电子邮件链接,以便在您检测到此情况时使用Stripe进行注册。

替代方案:

RevenueCat可以处理所有订阅跟踪和开箱即用的边缘情况,它与Firebase配合使用。免责声明:我在那里工作。

© www.soinside.com 2019 - 2024. All rights reserved.