恢复应用内购买

时间:2012-12-21 21:06:22

标签: iphone objective-c ios ipad storekit

恢复应用内购买时,会调用以下委托方法:

-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {

    NSLog(@"%@", queue.transactions);

    for (SKPaymentTransaction *transaction in queue.transactions) {

        //restore

    }

}

queue.transactions中有很多交易,而只恢复了一个产品(在此示例中,有超过20个事务写入日志)。为什么? 不应该只有一笔交易吗?如果我开始从我的服务器下载产品,它会进行二十次下载,因为阵列中的事务太多了!

enter image description here

1 个答案:

答案 0 :(得分:1)

您应该使用paymentQueue:updatedTransactions:方法处理交易。 paymentQueueRestoreCompletedTransactionsFinished:可以告诉您已完成。

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
    for (SKPaymentTransaction *transaction in transactions)
    {
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                // process purchase
                break;
            case SKPaymentTransactionStateFailed:
                // process error
                break;
            case SKPaymentTransactionStateRestored:
                // process restored IAP
                break;
        }
    }
}