У меня есть два iPhone, которые я использую для тестирования своего приложения.
На устройстве A:
NSLog(@"Unfinished Transactions: [%i]", [[SKPaymentQueue defaultQueue].transactions count]);
Какие результаты: «Незавершенные транзакции: [0]»
Когда я выполняю:
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]
, функция
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
вызывается с 17 элементами в массиве транзакций, каждый из которых помечен как ВОССТАНОВЛЕННЫЙ. Итак, я перебираю набор и вызываю [[SKPaymentQueue defaultQueue] finishTransaction: transaction]
для каждого.
После обработки каждого элемента (void) paymentQueueRestoreCompletedTransactionsFinished: (SKPaymentQueue *) вызывается очередь
, и [[количество транзакций в очереди]]
равно 4, а не 17, что это что-то вроде сюрприза.
Если я повторно запустил [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]
на этом устройстве, я неоднократно получаю тот же результат - несмотря на то, что я сказал каждой транзакции, что я хочу, чтобы она была удалена из очереди, updateTransactions вызывается с 17 элементы для обработки.
На устройстве B,
$NSLog(@"Unfinished Transactions: [%i]", [[SKPaymentQueue defaultQueue].transactions count]);
по-прежнему выводит «Незавершенные транзакции: [0]»
Когда я запускаю
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]
, функция
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
НИКОГДА не вызывается. В конце концов вызывается
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
, где
[[queue transactions] count]
равно 0.
Что может быть причиной этого? Это похоже на то, как очередь платежей связана с идентификатором устройства, а не с Apple ID тестовой учетной записи. Также прошу прощения за ужасное форматирование этого вопроса, я все еще привыкаю к StackOverflow. :)