我会尽力回答您的问题,但您可能会从观看WWDC StoreKit视频中受益,
1
和
2
.
-
我会将购买状态存储在您存储所有其他客户端状态的同一位置。
-
我不会保存整个收据。这太过分了,只需提取您需要的信息并保存即可。收据始终可以从
Bundle.appStoreReceiptURL
所以你不需要存储它。
-
对于订阅,您需要与苹果的验证收据
verifyReceipt
端点,并查找最新的
expires_date
对于给定的IAP产品标识符。存储该日期(默认值或其他位置),并使用该日期计算用户的状态。
-
获取最新到期日期的正确方法是将收据发送到您自己的服务器,存储它,并定期根据
验证收据
端点并从
latest_receipt_info
SKPaymentQueue
在应用程序中设置观察者,因为当定期订阅续订时,队列上将出现一个新事务。如果你处理这个,读取新的收据数据,并完成交易,你不需要一个完整的后端,但是,如果不独立于后端验证收据,它将容易受到IAP破解程序的攻击。
-
当您将收据发送给
/verifyReceipt
您将收到一个包含键的JSON响应
最新收据信息
这将有最新的交易。无论收据有多旧,这都是真实的。
IAP特别是订阅不是一个简单的系统,所以我强烈建议大家花点时间看WWDC的视频和阅读苹果的
guides on StoreKit
.