iOS和Firebase自动续订订阅

时间:2019-03-25 17:03:40

标签: ios firebase in-app-purchase in-app-subscription

我的问题:

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

购买过程:

  1. User1购买了一个订阅
    • 使用订阅标识符在Firebase上更新User1的帐户 (用于解锁内容)
    • 使用带用户1的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

一段时间以来,我一直在为此苦苦挣扎,却找不到很多资源。感谢所有帮助。

1 个答案:

答案 0 :(得分:6)

对于案例1:

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

对于案例2:

  

我说“苹果ID已连接   用另一个帐户或其他东西”?

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

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

替代:

RevenueCat可以开箱即用地处理所有订阅跟踪和这些极端情况,并且与Firebase配合使用非常好。 免责声明:我在那工作。