2016-06-21 2 views
2
-(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions{ 
for (SKPaymentTransaction* transaction in transactions) 
{ 
    CCLOG("transactionState = %ld", transaction.transactionState); 
    switch (transaction.transactionState) 
    { 
     case SKPaymentTransactionStatePurchased: 
      [self completeTransaction:transaction]; 
      break; 
     case SKPaymentTransactionStateFailed: 
      [self failedTransaction:transaction]; 
      break; 
     case SKPaymentTransactionStateRestored: 
      [self completeTransaction:transaction]; 
      break; 
     default: 
      break; 
    } 
} 

위 코드는 우리가 알고있는 구매 상태를 추적하기위한 것입니다. 그러나이 코드는 "앱내 구매가 이미 구매되었습니다"라는 이벤트를 추적하지 못하는 것으로 보입니다."앱내 구매가 이미 구매되었습니다"이벤트

[[SKPaymentQueue defaultQueue] addPayment:payment]; 

이미 구입하는 IAP를 구입하려면 위의 코드를 사용할 때마다, 대화 상자를 구입 IOS는 확인은 (출력은 "transactionState = 0")를 transactionState = SKPaymentTransactionStatePurchasing 함께 표시됩니다. 그런 다음 아이템을 구입하고 "앱내 구매가 이미 구매되었습니다"대화 상자는 다른 상태 코드 출력없이 보여줍니다.

위의 이벤트를보고 싶습니다. 잡을 수 있어야합니다. 이벤트가 다른 장소에서 던져 집니까?

+0

제대로 작동하도록 했습니까? 이미 구입 한 항목에 대해 addPayment를 호출해도 콜백 이벤트가 반환되지 않는 비슷한 문제가 발생합니다. –

+0

아니요, 오랜 시간 동안 솔루션을 찾지 못한 결과가 없습니다. 상황을 피하기 위해 내 애플 리케이션에 일부 자물쇠를 추가합니다. – ZeroZerg

+0

어떤 종류의 자물쇠를 추가하셨습니까? – keyboard

답변

0

내 경우에는 다른 라이브러리가 이미 자체 관찰자를 등록한 후 에 SKPaymentTransactionObserver을 추가하여 문제가 발생했습니다. 내 응용 프로그램이 자신의 옵저버를 등록하도록 초기화 순서를 전환하면 처음에는 문제가 해결되었습니다.

I've provided in more detail here

관련 문제