У меня есть автопродлеваемая подписка. Когда приложение устанавливается на новое устройство, 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;
}
Восстановление проходит, но счетчик не уменьшается. Наверное, это что-то простое и глупое. Может ли кто-нибудь показать мне, как уменьшить этот счетчик?
Спасибо!
int
передtCount =myQueue.transactions.count;
, чтобы объявить tCount как целое число? - person Andrew   schedule 24.11.2013