paymentQueueRestoreCompletedTransactionsFinished: возвращает пустую очередь, когда в ней должны быть транзакции

Я впервые пользуюсь Store Kit, и все прошло отлично, пока я не попытался восстановить покупки. Я видел несколько других сообщений о переполнении стека о подобных проблемах, но я не нашел решения, которое работает для меня.

У меня в приложении есть кнопка, которая вызывает [[SKPaymentQueue defaultQueue] restoreCompletedTransactions], Это в свою очередь вызывает SKPaymentTransactionObserver метод paymentQueueRestoreCompletedTransactionsFinished:, Проблема в том, что paymentQueueRestoreCompletedTransactionsFinished: имеет нулевые транзакции в возвращенной очереди.

Если я попытаюсь совершить покупку, меня уведомят, что я уже совершил покупку. Это говорит мне о том, что магазин знает, что мой тестовый Apple ID успешно совершил покупку с предыдущей попытки. Почему тогда paymentQueueRestoreCompletedTransactionsFinished: вернуть пустую коллекцию транзакций в свою очередь?

Были некоторые упоминания о том, что песочница ведет себя хаотично, но мне нужно убедиться, что это работает, прежде чем я перейду в AppStore.

Есть идеи? Я что-то пропустил?

Заранее спасибо.

3 ответа

Решение

Вы обрабатываете транзакции в -paymentQueue:updatedTransactions:? Этот обратный вызов возвращает ваши восстановленные транзакции до paymentQueueRestoreCompletedTransactionsFinished: Перезвоните.

Вы должны сделать вашу обработку восстановления и обработки внутри -paymentQueue:updatedTransactions:,

Я считаю, что это ошибка в песочнице App Store. Мои восстановления не работали с моими тестовыми аккаунтами (созданными в эпоху iOS 5.0). -paymentQueue:updatedTransactions: не вызывали во время восстановления.

Как следует из комментария process255, я создал нового тестового пользователя в iTunes Connect. С новым тестовым аккаунтом все работает отлично!

В зависимости от типа продукта, какие продукты будут поставлены в очередь:

-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue

в качестве альтернативы прочитайте квитанцию ​​по адресу:

[[NSBundle mainBundle] appStoreReceiptURL]

Единственная проблема с квитанциями заключается в том, что они хранятся локально, но Apple не держит их в подвешенном состоянии. Конечно, покупки сохраняются и на сервере Apple. Обновить / загрузить квитанцию ​​по:

    SKReceiptRefreshRequest *recreq = [[SKReceiptRefreshRequest alloc] init];
[recreq start];

У меня была такая же проблема, но вместо того, чтобы создавать нового пользователя, я просто зашел в магазины iTunes и Aoo в настройках, вышел из тестовой учетной записи песочницы и попробовал снова. За работой!

Другие вопросы по тегам