当恢复交易,这里有两种方法下放:
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
当所有的交易都将恢复第一个(paymentQueueRestoreCompletedTransactionsFinished)被调用。如果您以前没有任何购买,它也会调用此方法,因为恢复的工作正常,但无法恢复。
另一种方法(restoreCompletedTransactionsFailedWithError)在恢复事务时出错时被调用。
如果需要显示一条消息给用户,告诉他,他没有任何交易,以恢复您可以使用:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
这里有一个小片段为这个代表:
//
// called when the transaction status is updated
//
- (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];
restoredTransaction++;
break;
default:
break;
}
}
}
然后你可以使用restoredTransaction可变知道,如果任何交易已经恢复对paymentQueueRestoreCompletedTransactionsFinished
由于该问题不是由Test用户购买的,您将不会从iTunesConnect获得'SKPaymentTransactionStateRestored'作为回复,最终完成您的转换。 – Hisenberg
这很清楚。但是我发现了一个“联系App Store”进度指示器,并且我仍然需要一个事件来在失败时隐藏它。 – Geri
没有失败,当没有事务存在时还原。其实这个案件是作为成功处理的。 – Felix