Ios 是否需要恢复代码paymentQueueRestoreCompletedTransactionsFinished()?

Ios 是否需要恢复代码paymentQueueRestoreCompletedTransactionsFinished()?,ios,swift,in-app-purchase,storekit,Ios,Swift,In App Purchase,Storekit,我想正确地实现恢复以前购买的IAP的功能,但是,我已经阅读了一些相互冲突的方法,现在我感到困惑 我在沙盒中工作的方法是从paymentQueue()恢复,如下所示 func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { case .restored: defer { queue.finis

我想正确地实现恢复以前购买的IAP的功能,但是,我已经阅读了一些相互冲突的方法,现在我感到困惑

我在沙盒中工作的方法是从paymentQueue()恢复,如下所示

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {

case .restored:

            defer {
                queue.finishTransaction(transaction)
            }

            if let productIdentifier = transaction.original?.payment.productIdentifier {
                unlockProduct(withIdentifier: productIdentifier)
            }
}
我刚刚在paymentQueueRestoreCompletedTransactionsFinished()中收到一个警报。其他一些方法也有还原代码,但我认为它们不应该

我做得对吗,我是如何做的,是一种正确的方法,一种在沙箱环境之外工作的方法吗


谢谢

您无需实施
paymentQueueRestoreCompletedTransactionsFinished
。正如您所注意到的,这里不是实际恢复已完成事务的地方

我建议你考虑在点击“恢复”按钮时提供适当的用户反馈;恢复事务可能需要一些时间,因此您可能需要考虑显示活动旋转器或其他UI元素来指示恢复正在发生。code>paymentQueueRestoreCompletedTransactionsFinished是您应该删除此UI的位置


您还可以跟踪是否实际恢复了任何购买,然后在此功能中显示适当的消息。e、 g.“未发现任何购买”或“已恢复3次购买”

您无需实施
paymentQueueRestoreCompletedTransactionsFinished
。正如您所注意到的,这里不是实际恢复已完成事务的地方

我建议你考虑在点击“恢复”按钮时提供适当的用户反馈;恢复事务可能需要一些时间,因此您可能需要考虑显示活动旋转器或其他UI元素来指示恢复正在发生。code>paymentQueueRestoreCompletedTransactionsFinished是您应该删除此UI的位置


您还可以跟踪是否实际恢复了任何购买,然后在此功能中显示适当的消息。e、 g.“未发现任何购买”或“已恢复3次购买”

非常有用,谢谢。这也是一个很好的建议,我会这么做的。这很有帮助,谢谢。这也是一个很好的建议,我会这么做的。