代码之家  ›  专栏  ›  技术社区  ›  Pradeep Reddy Kypa

在ios中存储自动续订订阅收据的最佳方式是什么?[已关闭]

  •  1
  • Pradeep Reddy Kypa  · 技术社区  · 6 年前

    我正在我的应用程序中实现自动续订。我能够完美地完成所有的购买和修复工作。但我对保存收据细节的最佳方式感到震惊。下面是我的问题。

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

    1 回复  |  直到 6 年前
        1
  •  4
  •   Jacob Eiting    6 年前

    我会尽力回答您的问题,但您可能会从观看WWDC StoreKit视频中受益, 1 2 .

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

    2. 我不会保存整个收据。这太过分了,只需提取您需要的信息并保存即可。收据始终可以从 Bundle.appStoreReceiptURL 所以你不需要存储它。

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

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

    5. 当您将收据发送给 /verifyReceipt 您将收到一个包含键的JSON响应 最新收据信息 这将有最新的交易。无论收据有多旧,这都是真实的。

    IAP特别是订阅不是一个简单的系统,所以我强烈建议大家花点时间看WWDC的视频和阅读苹果的 guides on StoreKit .