Множественное количество чеков для покупки в приложении restoreCompletedTransaction

У меня есть автопродлеваемая подписка. Когда приложение устанавливается на новое устройство, Apple возвращает ВСЕ предыдущие квитанции о покупках, в этом случае, поскольку это песочница, я получаю 6 квитанций при каждой установке. Затем наблюдатель отправляет очередь для восстановленных завершенных транзакций. У меня есть способ отправить транзакцию на мой сервер для проверки 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;        
   }

Восстановление проходит, но счетчик не уменьшается. Наверное, это что-то простое и глупое. Может ли кто-нибудь показать мне, как уменьшить этот счетчик?

Спасибо!


person PrivusGuru    schedule 21.09.2012    source источник
comment
Разве вы не должны поместить int перед tCount =myQueue.transactions.count;, чтобы объявить tCount как целое число?   -  person Andrew    schedule 24.11.2013


Ответы (1)


Я жду, пока restoreCompletedTransactionsFinished перед тем, как отправить квитанцию ​​​​на свой сервер для проверки в Apple. Это исключает отправку каждой квитанции, которая через несколько месяцев может стать обременительной. Таким образом, нет необходимости уменьшать транзакцию до cout.

person PrivusGuru    schedule 09.10.2012