我的问题:
我很难找到一种方法来安全地管理自动更新订阅在iOS与Firebase。
采购流程:
- 用户1购买订阅
- 使用订阅标识符(用于解锁内容)更新Firebase上User1的帐户
- 存储用户1的原始交易标识符(OTI)和UID,以匹配Apple的收据验证。
- 授予用户访问权限
边缘病例让我的大脑崩溃 - 用户1注销用于购买订阅的AppleId,但仍通过Firestore凭据登录应用。
- 因此,当我去验证订阅是否过期时,它不会返回有效的订阅。我希望用户能够保持他们的访问权限,直到它过期或取消。实现这一点的任何提示?
- 用户2登录到用户1之前使用的同一设备。
- 因此,两个用户使用的是相同的AppleId,我可以检查当前用户是否订阅了,并检查OTI,看看它是否对应于User2 ......它不会。
- 我们将显示“购买iAPs”屏幕,但如果这个用户想购买订阅以及在同一个AppleId下呢?这是正常的,我处理这种说法,“苹果Id已经连接到另一个帐户或东西”?
我能够找到的相关文章:
How to tie auto-renewable subscriptions to in house user, not appled id
- 我已经为此挣扎了一段时间,并没有能够找到很多资源。所有的帮助是感激的。*
1条答案
按热度按时间holgip5t1#
对于案例#1:
当你试图访问收据时,苹果会触发一个登录提示,让用户输入他们的iTunes凭据。如果收据仍然不可用,你将无法验证订阅状态。“正确”的方法是将整个收据存储在服务器上,并定期使用
/verifyReceipt
刷新它。你会检查订阅是否被取消,并更新expiration_date
,以便您知道何时切断用户的访问。对于案例#2:
这是正常的,我处理这个说法,“苹果ID已经连接到另一个帐户或什么”?
是的!如果你能看看其他一些大型订阅应用程序是如何处理这个问题的(Netflix、Spotify、HBO等)--这和你描述的很相似。如果你在服务器上维护订阅状态(如第一条所述),而不是每次都在本地检查收据,那么只有当用户试图“恢复购买”时才会发生这种情况。
这是一个非常极端的情况,因为没有多少人会尝试在朋友的手机上购物,而且大多数情况下都需要TouchID/FaceID--所以它更像是一个防欺诈功能。一旦你拥有数百万用户,如果你发现了这一点,你就可以向他们发送一个自动电子邮件链接,让他们注册Stripe。
备选案文:
RevenueCat可以处理所有订阅跟踪和这些开箱即用的边缘情况,而且它与官方Firebase集成配合得很好。* 免责声明:我在那里工作。