我想在我的应用程序中添加还原选项。
我添加了一个按钮,可以执行以下两行操作:
SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
SKPaymentQueue.defaultQueue().addTransactionObserver(self)
我还有一个功能,用来检查恢复是否成功:
func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) {
for transaction:AnyObject in transactions {
if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{
switch trans.transactionState {
case .Purchased, .Restored:
SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction)
//code
break;
case .Failed:
SKPaymentQueue.defaultQueue().finishTransaction(transaction as SKPaymentTransaction)
//code
break;
default:
break;
}
}
}
但当我按下按钮时什么也没发生,它不会激活paymentQueue功能。
代码有问题吗?
怎么了?
谢谢。
最佳答案
这可能不是唯一的问题,但是在触发已完成事务的恢复之后,您可以将自己添加为事务观察者。如果restoreCompletedTransactions()
是同步的,或者如果此方法在此时设置回调路由,则将错过响应。将调用反转为
SKPaymentQueue.defaultQueue().addTransactionObserver(self)
SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
这样可以解决你的问题。