如果我没有使用 paymentQueueRestoreCompletedTransactionsFinished 方法但在 paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) 中使用恢复的事务状态,如果有任何差异,如下所示:

1

paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
        print("add paymnet")

        for transaction:AnyObject in transactions {
            let trans = transaction as! SKPaymentTransaction
            print(trans.error)

            switch trans.transactionState {

            case .Purchased. Restored:
...

and 

...
    @IBAction func RestorePurchases(sender: UIButton) {
        SKPaymentQueue.defaultQueue().addTransactionObserver(self)
        SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
    }

或者我将使用 paymentQueueRestoreCompletedTransactionsFinished 方法,但在 paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) 中的.Restored状态我会像这里一样使用制动操作符:

2

func paymentQueueRestoreCompletedTransactionsFinished(queue: SKPaymentQueue) {
//restored code here
}

//and 

    func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
        print("add paymnet")

        for transaction:AnyObject in transactions {
            let trans = transaction as! SKPaymentTransaction
            print(trans.error)

            switch trans.transactionState {

            case .Purchased:
...
            case .Restored:
             break
...

//and 

...
    @IBAction func RestorePurchases(sender: UIButton) {
        SKPaymentQueue.defaultQueue().addTransactionObserver(self)
        SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
    }

任何帮助将不胜感激!

PS

在恢复过程中消耗品和非消耗品购买的代码应该有什么不同吗?