當恢復交易,這裏有兩種方法下放:
- (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