任何人都知道如何使用 IAP 进行恢复选项。
我使用非消耗品进行购买。
我知道我必须实现这个委托(delegate)方法:
- (void)restoreTransaction:(SKPaymentTransaction *)transaction
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
但我仍然无法弄清楚如何通过进程调用此方法。
我假设我需要在调用回调方法之前调用此方法[[SKPaymentQueue defaultQueue] RestoreCompletedTransactions];
。
您能逐步解释一下它是如何工作的吗?
最佳答案
你猜对了!您唯一需要调用的是:
[[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);
}
关于ios - 应用内购买恢复功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11396642/