是否有必要恢复代码paymentQueueRestoreCompletedTransactionsFinished()?

时间:2018-06-14 00:25:46

标签: ios swift in-app-purchase storekit

我想正确实现恢复以前购买的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()中发出警报。其他一些方法在那里恢复代码,但我不认为它们应该。

我这样做是对的,我是如何使用正确的方法完成它的,这个方法可以在沙盒环境之外工作?

感谢。

1 个答案:

答案 0 :(得分:1)

您无需实施paymentQueueRestoreCompletedTransactionsFinished。如您所知,这不是实际恢复已完成交易的地方。

我建议您考虑在点击“恢复”时提供适当的用户反馈。按钮;恢复事务可能需要一些时间,因此您可能需要考虑显示活动微调器或其他UI元素以指示正在进行恢复。 paymentQueueRestoreCompletedTransactionsFinished是您应该删除此用户界面的地方。

您还可以跟踪是否实际恢复了任何购买,然后在此功能中显示相应的消息。例如"没有找到任何购买"或者" 3次购买已经恢复"