1

自動更新可能なサブスクリプションを持っています。アプリが新しいデバイスにインストールされると、Apple は以前のすべての購入レシートを返します。この場合はサンドボックスであるため、インストールするたびに 6 つのレシートを受け取ります。その後、オブザーバーは、restoredCompleted トランザクションのキューを送信します。Apple 検証のためにトランザクションをサーバーに送信する方法がありますが、6 回のレシートがあるため、6 回実行されます。私は本当に送信された最後の領収書だけを扱いたいです。

そのため、キュー内のトランザクションをカウントし、カウントが 1 に達したときにのみ受信を確認しようとしています。

これが私がこれまでに持っているものです:

    - (void)paymentQueue: (SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
if (myQueue == nil) {
    myQueue = [SKPaymentQueue defaultQueue];
}

NSLog(@"Transactions in Array  in My Store %@", [queue transactions]); 
tCount =myQueue.transactions.count;
NSString *transCount =  [NSString stringWithFormat:@"%d",tCount];

for (SKPaymentTransaction *transaction in transactions)       

{ switch (transaction.transactionState)     

    { case SKPaymentTransactionStatePurchased:
            [self completeTransaction: transaction];
            break;

        case SKPaymentTransactionStateFailed:
            [self failedTransaction: transaction];
            break;

        case SKPaymentTransactionStateRestored:                

            if  ([transCount isEqualToString:@"1"]) {
                [self restoreTransaction: transaction];
            }

            else {
               tCount--;

                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
                    [[SKPaymentQueue defaultQueue] finishTransaction: transaction];
                });
            }


        default:
            break;

          }
      }
    return;        
   }

復元は繰り返されますが、カウントは減少しません。これはおそらく単純でばかげたものです。誰かがこのカウントを減らす方法を教えてもらえますか?

ありがとう!

4

1 に答える 1

2

サーバーに領収書を送信してAppleに確認する前に、restoreCompletedTransactionsFinishedまで待ちます。これにより、数か月後に面倒になるすべての領収書を送信する必要がなくなります。したがって、トランザクション数を減らす必要はありません。

于 2012-10-09T16:19:24.800 に答える