使用swift,iOS恢复InApp购买

我正在应用购买中实现恢复。 我有一个按钮,其动作是

@IBAction func restorePurchases(send : AnyObject){ SKPaymentQueue.defaultQueue().restoreCompletedTransactions() // if (success) { // I want to do something here // } } 

我的问题是。

  1. 这是恢复的正确方法吗?
  2. 我们如何validation恢复购买的成功行动?

不要忘记检查您是否可以付款:

 if (SKPaymentQueue.canMakePayments()) { SKPaymentQueue.default().restoreCompletedTransactions() } 

要检查恢复是否良好,您必须遵循协议: SKPaymentTransactionObserver然后实现该方法:

 func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) 

并通过执行以下操作订阅该事件:

 SKPaymentQueue.default().add(self) 

最后这里是我如何检查结果的例子:

 func paymentQueue(_ queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) { print("Received Payment Transaction Response from Apple"); for transaction in transactions { switch transaction.transactionState { case .purchased, .restored: print("Purchased purchase/restored") SKPaymentQueue.default().finishTransaction(transaction as SKPaymentTransaction) break case .failed: print("Purchased Failed") SKPaymentQueue.default().finishTransaction(transaction as SKPaymentTransaction) break default: print("default") break } } }