Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 应用程序采购中restoreCompletedTransaction的多个收据计数_Ios_In App Purchase_Auto Renewing - Fatal编程技术网

Ios 应用程序采购中restoreCompletedTransaction的多个收据计数

Ios 应用程序采购中restoreCompletedTransaction的多个收据计数,ios,in-app-purchase,auto-renewing,Ios,In App Purchase,Auto Renewing,我有一个自动续费订阅。当应用程序安装在新设备上时,苹果会返回所有以前的购买收据,在这种情况下,因为它是沙盒,我每次安装都会收到6张收据。然后,观察者发送恢复的已完成事务的队列。我有一个方法将事务发送到我的服务器进行苹果验证,但由于有6张收据,它运行了6次。我真的只想处理最后发送的收据 因此,我尝试对队列中的事务进行计数,并且仅在计数达到1时验证收据 以下是我到目前为止的情况: - (void)paymentQueue: (SKPaymentQueue *)queue updatedTra

我有一个自动续费订阅。当应用程序安装在新设备上时,苹果会返回所有以前的购买收据,在这种情况下,因为它是沙盒,我每次安装都会收到6张收据。然后,观察者发送恢复的已完成事务的队列。我有一个方法将事务发送到我的服务器进行苹果验证,但由于有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;        
   }
还原将循环执行,但计数不会减少。这可能是一些简单而愚蠢的事情。有人能告诉我如何减少这个数目吗


谢谢

我会等到restoreCompletedTransactionsFinished,然后再向我的服务器发送收据,以便与Apple进行验证。这就消除了发送每个收据的麻烦,几个月后可能会变得繁重。因此,不需要递减到事务cout。

您是否应该在
tCount=myQueue.transactions.count之前放置一个
int
是否将tCount声明为整数?