任何人都知道如何使用IAP进行恢复选项。
我使用非消费品购买。
我知道我必须实现这个委托方法:
- (void)restoreTransaction:(SKPaymentTransaction *)transaction
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
但是我仍然无法弄清楚一个进程调用这个方法。
我假设在调用callback方法之前需要调用此方法[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
。
你能逐步解释它是如何运作的。
答案 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);
}