我的应用使用订阅模式,我收到投诉,其中有些用户无法通过SKPaymentQueue.restoreCompletedTransactions
恢复订阅。他们必须删除应用程序并从AppStore重新下载。
我不确定为什么它只发生在某些用户身上,其中一个用户告诉我他通过iTunes取消并重新启动,另一个用于付款问题。
那为什么他们需要重新下载应用程序?我猜测收据上的某些信息没有正确刷新,因此我考虑使用SKReceiptRefreshRequest
代替restoreCompletedTransactions
,或者可能同时使用这两种信息。
有人可以解释这两个过程之间的差异吗?
答案 0 :(得分:13)
SKReceiptRefreshRequest
与RestoreCompletedTransactions
之间的区别非常简单:
<强> SKReceiptRefreshRequest 强>
刷新收据会向App Store询问最新的副本 收据。刷新收据不会创建任何新交易。 虽然你应该避免连续多次刷新,这个 动作与仅刷新一次的结果相同。
<强> RestoreCompletedTransactions 强>
恢复已完成的交易会为每个交易创建一个新交易 用户完成的交易,基本上重播历史记录 你的事务队列观察者。正在进行交易 恢复,您的应用程序保持自己的状态,以跟踪它的原因 恢复已完成的事务以及它们如何处理它们。 多次还原会为其创建多个还原的事务 每个完成的交易。
我们可以同时使用SKReceiptRefreshRequest
和&amp;恢复已完成的事务以验证用户订阅,但在下面的情况下,我们必须使用恢复已完成的事务而不是刷新收据:
如果您使用Apple托管的内容,则还原已完成的交易会为您的应用提供用于下载内容的交易对象。
如果您需要支持早于iOS 7的iOS版本,但应用收据不可用,请改为恢复已完成的交易。
如果您的应用使用非续订订阅,则您的应用负责恢复过程。