2016-06-21 16 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確認は、(出力が「トランザクション状態= 0」である)をトランザクション状態= SKPaymentTransactionStatePurchasingと一緒に表示されます。次に、そのアイテムを購入し、「アプリケーション内購入は既に購入済み」のダイアログが表示され、他の状態コード出力は表示されません。

私は上記のイベントをキャッチしたいと思います。私は捕まえるべきであるはずだと確信している。このイベントは他の場所で放映されますか?

+0

正常に動作するように管理しましたか?すでに購入した商品のaddPaymentを呼び出すと、コールバックイベントが返されないので、私は同様の問題に遭遇しています –

+0

いいえ、長年にわたる解決策が見つからなかった場合、結果は返されません。私は状況を避けるために私のアプリにいくつかのロックを追加します。 – ZeroZerg

+0

どのような種類のロックを追加しましたか? – keyboard

答えて

0

私の場合、別のライブラリが既に独自のオブザーバを登録した後ににSKPaymentTransactionObserverを追加することによって問題が発生しました。初期化の順番を入れ替えて、自分のオブザーバーを登録したアプリが最初に問題を解決しました。

I've provided in more detail here

関連する問題