2011-09-03 5 views

答えて

2

restoreCompletedTransactionsメッセージをSKPaymentQueueに送信してユーザーの購入を復元するときに、SKPaymentTransactionStatePurchasedトランザクションの代わりにSKPaymentTransactionStateRestoredトランザクションが発生します。

+0

これに頼らないでください... –

+0

...復元されたトランザクションは、以前は「購入済」で、その後は「完了」でしたか?私は彼らが再び「仕上げ」されるべきではないと思いますか? –

1

一般的なルールは、両方のコールバックを処理することです。購買と復元の購入です。

- (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]; 

     default: 
      break; 
     } 
    } 
} 

- (void) completeTransaction: (SKPaymentTransaction *)transaction 
{ 
[self recordTransaction: transaction content:transaction.payment.productIdentifier]; 

[[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 
} 

- (void) restoreTransaction: (SKPaymentTransaction *)transaction 
{ 
[self recordTransaction: transaction content:transaction.originalTransaction.payment.productIdentifier]; 

[[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 
} 
+3

ニースコード...しかし、質問には答えません。 –