restoreCompletedTransaction inapp购买的多个收据计数

我有一个autorenewable订阅。 当应用程序安装在新设备上时,Apple将返回所有以前的购买收据,在这种情况下,因为它是沙盒,所以每次安装时我都会收到6张收据。 观察者然后发送队列为restoredCompleted交易。 我有一个方法将事务发送到我的服务器进行Applevalidation,但由于有6个收据,所以它运行了6次。 我真的只想处理最后发送的收据。

所以我试图计数队列中的交易,并且只在计数达到1时validation收据。

这是我到目前为止:

- (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; } 

恢复循环,但计数不会减less。 这可能是简单而愚蠢的事情。 有人能告诉我如何减less这个数字吗?

谢谢!

我等到restoreCompletedTransactionsFinished发送收据到我的服务器与苹果validation之前。 这消除了发送每个收据,这在几个月后可能变得繁重。 所以,不需要递减到事务cout。