iPhone — тестирование покупки в приложении на предмет отказа

Apple заявляет, что все приложения, использующие встроенные покупки, должны поместить это

[[SKPaymentQueue defaultQueue] addTransactionObserver:self.observer];

в начале приложения для обработки любой успешной продажи, если по какой-то причине устройство не получило подтверждения о выпуске контента.

Я пытаюсь проверить это, пытаясь позвонить на телефон, когда он собирается завершить транзакцию, выйти из приложения или остановить Xcode до завершения транзакции, но по какой-то причине, даже когда я выхожу из Xcode, iOS продолжает обрабатывать транзакцию и приложение никогда не получает SKPaymentTransactionStateRestored. Приложение всегда получает SKPaymentTransactionStatePurchased и кажется отказоустойчивым (возможно, новая iOS 4 обрабатывает это лучше, чем 3.2, когда был выпущен StoreKit).

Мой вопрос: знаете ли вы, ребята, любую ситуацию, которую я могу создать здесь, чтобы сгенерировать сбой и получить SKPaymentTransactionStateRestored при запуске приложения? Мне нужно проверить, хорошо ли работает приложение в такой ситуации.

спасибо


person Duck    schedule 16.07.2011    source источник


Ответы (1)


SKPaymentTransactionStateRestored используется только при вызове restoreCompletedTransactions (чтобы пользователь мог восстановить свои покупки в приложении на новом устройстве). Если вы выйдете из приложения без вызова finishTransaction:, транзакция останется в очереди, и вы снова получите SKPaymentTransactionStatePurchased.

person jtbandes    schedule 16.07.2011
comment
ах, хорошо, но какие ситуации в реальной жизни могут произойти, что транзакция никогда не будет завершена? - person Duck; 17.07.2011
comment
Никто. Обратный вызов будет вызываться всегда, пока вы регистрируете наблюдателя. В случае сбоя возникает SKPaymentTransactionStateFailed. - person jtbandes; 17.07.2011