【问题标题】:What is the best way of storing auto renewing subscription receipts in ios? [closed]在 ios 中存储自动续订订阅收据的最佳方式是什么? [关闭]
【发布时间】:2017-11-21 20:48:17
【问题描述】:

我正在我的应用中实施自动续订订阅。我能够完美地完成所有购买和修复。但是我对保存收据详细信息的最佳方法感到有些震惊。以下是我的问题。

  1. 在 NSUserDefaults 中保存交易细节是个好主意吗 并在需要时检索详细信息?
  2. 将收据保存在文档目录中并从那里读取它是一个好主意吗?
  3. 检查订阅结束日期的最佳方法是什么? 我是否需要不断检查当前日期,然后与 每次用户尝试访问时订阅的结束日期 内容?
  4. 我可以从保存的收据中获取订阅的结束日期,还是需要联系 Apple 服务器来获取订阅的结束日期?
  5. 订阅自动续订后如何更新收据 在指定期限之后?

我知道一些方法。但想知道最好的方法。请指导我实现上述目标的最佳步骤。谢谢。

【问题讨论】:

    标签: ios in-app-purchase auto-renewing receipt-validation in-app-subscription


    【解决方案1】:

    我会尝试回答您的问题,但观看 WWDC StoreKit 视频12 可能会让您受益。

    1. 我会将购买状态存储在您存储所有其他客户端状态的同一位置。

    2. 我不会保存整个收据。这将是矫枉过正,只需提取您需要的信息并保存它。收据始终可以从Bundle.appStoreReceiptURL 访问,因此您无需存储它。

    3. 对于订阅,您需要使用 Apple 的 verifyReceipt 端点验证收据,并找到给定 IAP 产品标识符的最新 expires_date。存储此日期(默认或其他位置)并使用它来计算用户的状态。

    4. 获取最新过期的正确方法是将收据发送到您自己的服务器,存储它,并定期检查它与 verifyReceipt 端点并从响应中的 latest_receipt_info 字段更新过期.一个不太好的解决方案是确保您的应用程序中始终有一个SKPaymentQueue 观察者设置,因为当定期订阅更新时,队列中将出现一个新事务。如果你处理这个,读取新的收据数据,并完成交易,你不需要一个完整的后端,但是,如果不独立于你的后端验证收据,它将容易受到 IAP 破解者的攻击。

      李>
    5. 当您向 /verifyReceipt 发送收据时,您将收到一个 JSON 响应,其中包含一个密钥 latest_receipt_info,该密钥将包含最近的交易。无论收据有多旧,这都是正确的。

    IAP,尤其是订阅不是一个简单的系统,所以我强烈建议您花时间观看 WWDC 视频并阅读 Apple 的 guides on StoreKit

    【讨论】:

      猜你喜欢
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 2011-09-05
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多