2012-07-09 130 views
2

任何人都知道如何使用IAP進行恢復選項。在應用程序購買恢復功能

我使用非消耗品購買。

我知道,我要實現這個委託方法:

- (void)restoreTransaction:(SKPaymentTransaction *)transaction 
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error 
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 

,但我仍然無法找出一個過程調用此方法。

我假設我需要在調用回調方法之前調用這個方法[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

你可以一步一步解釋它是如何工作的。

回答

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; 
      } 
     } 

    } 

使用你能辨別交易是否是最初購買(SKPaymentTransactionStatePurchased)或恢復transactionState (SKPaymentTransactionStateRestored),如果你需要這樣做。

如果你需要知道什麼時候恢復完成後,您可以使用:

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { 
    NSLog(@"%d items restored", queue.transactions.count); 
}