在应用内购买还原功能

时间:2012-07-09 14:04:17

标签: ios in-app-purchase

任何人都知道如何使用IAP进行恢复选项。

我使用非消费品购买。

我知道我必须实现这个委托方法:

- (void)restoreTransaction:(SKPaymentTransaction *)transaction
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue

但是我仍然无法弄清楚一个进程调用这个方法。

我假设在调用callback方法之前需要调用此方法[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

你能逐步解释它是如何运作的。

1 个答案:

答案 0 :(得分:4)

你认为是对的!你唯一需要调用的是:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

这将恢复用户所做的所有已完成的事务。对于每个事务,调用此SKPaymentTransactionObserver方法(每次用户进行购买时也会调用相同的方法):

    - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
        for (SKPaymentTransaction *transaction in transactions) {
            switch (transaction.transactionState) {
                case SKPaymentTransactionStatePurchased:
                    [self completeTransaction:transaction];
                    break;
                case SKPaymentTransactionStateFailed:
                    [self failedTransaction:transaction];
                    break;
                case SKPaymentTransactionStateRestored:
                    [self restoreTransaction:transaction];
                    break;              
                default:
                    break;
            }
        }

    }

如果您需要这样做,您可以使用transactionState区分交易是原始购买(SKPaymentTransactionStatePurchased)还是恢复(SKPaymentTransactionStateRestored)。

如果您需要知道恢复何时结束,可以使用:

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
   NSLog(@"%d items restored", queue.transactions.count);
}