【问题标题】:iOS & Firebase Auto-renewable SubscriptionsiOS 和 Firebase 自动更新订阅
【发布时间】:2019-08-16 00:02:08
【问题描述】:

我的问题:

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

购买流程:

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

    对于案例 #1:

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

    对于案例 #2:

    “Apple Id 已连接”这句话对我来说是否正常? 使用其他帐户或其他什么”?

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

    这是一个非常极端的案例,因为没有多少人会尝试在他们朋友的手机上购物,并且在大多数情况下都需要 TouchID/FaceID - 所以它更多的是一种防止欺诈的功能。一旦你获得了数百万用户,你就可以在检测到这一点时,向他们发送一个自动电子邮件链接以注册 Stripe。

    替代方案:

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

    【讨论】:

    • 感谢您的回答 :) 我正在查看 RevenueCat 的文档……您可能刚刚获得了客户哈哈
    • RevenueCat 是否按照描述处理 #2?据我从文档中了解到,它会合并用户帐户,以防从具有相同 Apple ID 的不同 Revenue Cat 帐户恢复购买,我弄错了吗?
    • @PeterK 要完全防止这种情况,请不要在您的应用程序中包含“恢复购买”按钮(您在 Netflix 中找不到)。如果您设置allowAppStoreAccountSharing=false,RevenueCat 可以防止多个用户 ID 共享同一个订阅
    • RevenueCat 现在允许您配置案例 #2 的行为,并在帐户之间转移购买或简单地返回错误。
    猜你喜欢
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2021-02-06
    • 2019-07-19
    • 2017-03-28
    • 2012-09-08
    相关资源
    最近更新 更多