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 в настройках, вышел из тестовой учетной записи песочницы и попробовал снова. За работой!