2012-09-13 3 views
2

앱 구매시 구현 중입니다. 모든 것이 잘되고 있지만 SKPaymentTransactionStatePurchasing에서 항상 내 흐름이 멈 춥니 다. 아무도 그 이유를 알고 있습니까?. 도와주세요. 당신이 전화하고 있기 때문에SKPaymentTransactionStatePurchasing에서 애플리케이션 흐름이 중지됩니다.

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 
    { 
NSLog(@"transactions........%@",transactions); 
NSLog(@"transactions count........%d",[transactions count]); 
NSLog(@"transactions description ........%@",transactions.description); 

    [[SKPaymentQueue defaultQueue] removeTransactionObserver:self]; 

for (SKPaymentTransaction *transaction in transactions) 
{ 
    switch (transaction.transactionState) 

    { 
     case SKPaymentTransactionStatePurchased: 
      [self completeTransaction:transaction]; 
      [[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 
      break; 
     case SKPaymentTransactionStateFailed: 
      [self failedTransaction:transaction]; 
      [[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 
      break; 
     case SKPaymentTransactionStateRestored: 
      [self restoreTransaction:transaction]; 
      [[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 
      break; 
     case SKPaymentTransactionStatePurchasing: 
      NSLog(@"purchasing"); 
     // [self completeTransaction:transaction]; 
      break; 
     default: 
      NSLog(@"default case"); 
      break; 
    } 
    } 
    } 

답변

2

이 아마 무슨 일이 일어나고 :

[[SKPaymentQueue defaultQueue] removeTransactionObserver:self]; 

이 호출하면 앱은 더 이상 트랜잭션에 대한 추가 업데이트 통보되지 않습니다. 이 줄을 제거하십시오.

+1

종종 관찰자를 제거하지 않는 것이 좋습니다. 예를 들어 사용자가 구매를 시작한 후 신용 카드 정보를 업데이트하라는 메시지가 표시되면 설정 앱으로 이전되고 성공적으로 업데이트 한 후 앱 외부에서 구매 프로세스를 완료 할 수 있습니다. 앱으로 돌아 오면 2 회의 연속 거래가 발생하고 실패한 거래는 성공적인 거래가 이어집니다. 이 경우 실패한 트랜잭션 직후 옵저버를 제거하고 성공한 트랜잭션을 놓치고 싶지는 않습니다. – Got99Errors

관련 문제