恢复应用内购买时,会调用以下委托方法:
-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
NSLog(@"%@", queue.transactions);
for (SKPaymentTransaction *transaction in queue.transactions) {
//restore
}
}
queue.transactions
中有很多交易,而只恢复了一个产品(在此示例中,有超过20个事务写入日志)。为什么? 不应该只有一笔交易吗?如果我开始从我的服务器下载产品,它会进行二十次下载,因为阵列中的事务太多了!
答案 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;
}
}
}