我想在我的应用程序中添加还原选项。
我添加了一个按钮,可以执行以下两行操作:

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()

这样可以解决你的问题。

10-05 22:39