2011-09-03 3 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

좋은 코드 ...하지만 질문에 대답하지 않습니다. –

관련 문제