自動更新可能なサブスクリプションを持っています。アプリが新しいデバイスにインストールされると、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;
}
復元は繰り返されますが、カウントは減少しません。これはおそらく単純でばかげたものです。誰かがこのカウントを減らす方法を教えてもらえますか?
ありがとう!