我的应用程序使用订阅模式,我收到投诉,有些用户无法通过SKPaymentQueue.restoreCompletedTransactions
恢复订阅。他们必须删除应用程序并从AppStore重新下载。
我不确定为什么它只发生在一些用户身上,其中一个告诉我他通过itunes取消并重新启动,另一个关于付款问题。
那么为什么他们需要重新下载应用程序呢?我猜测一些信息在收据上没有正确刷新,所以我考虑使用SKReceiptRefreshRequest
而不是restoreCompletedTransactions
,或者可能同时使用两者。
有人可以解释这两个过程之间的差异吗?
这是SKReceiptRefreshRequest
与RestoreCompletedTransactions
之间非常简单的区别:
SKReceiptRefreshRequest
刷新收据会向App Store询问收据的最新副本。刷新收据不会创建任何新交易。虽然您应该避免连续多次刷新,但此操作与仅刷新一次的结果相同。
RestoreCompletedTransactions
恢复已完成的事务会为用户创建的每个已完成事务创建一个新事务,实质上是为事务队列观察者重放历史记录。在恢复事务时,您的应用程序会维护自己的状态,以跟踪恢复已完成事务的原因以及它们如何处理它们。多次还原会为每个已完成的事务创建多个已还原的事务。
我们可以使用SKReceiptRefreshRequest
和恢复完成的交易来验证用户订阅,但在下面的情况下,我们必须使用恢复已完成的交易而不是刷新收据: