2013-03-02 3 views
7

Проблема: Я пытаюсь проверить покупки приложений с помощью учетной записи изолированной программы, но каждый раз, когда я пытаюсь купить расходный элемент дважды, появляется следующее сообщение об ошибке:iOS Sandbox - не удается приобрести расходный элемент дважды

You've already purchased this In-App Purchase but it hasn't been downloaded. 
         [Environment: Sandbox] 

Это происходит только при использовании iOS < 6. Я читал, что это может быть проблема, связанная с песочницей. Кто-нибудь знает, есть ли какая-то правда в этом заявлении?

Я уверен, что следующий вызов делается для завершения первой транзакции:

[[SKPaymentQueue defaultQueue] finishTransaction:transaction] 

Я попытался сделать этот вызов, а чтобы избавиться от очереди не повезло:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

Я также убедился, что перед тестированием iAP я вышел из магазина iTunes. Кроме того, я также проверил, что номер сборки и версии находится в панели «Сводка» моей цели в Xcode.

+0

вы 100% уверен, что это расходный материал ...? – holex

+0

Да, я уверен. – user2125688

+0

Я испытываю это для iOS 6 и 7 и не потребляемых продуктов. Вы поняли, как это решить? – SpaceDog

ответ

0

проблема, вероятно, эта недостающая строка в коде

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

я получаю ту же ошибку несколько дней назад. и эта строка исправляет проблему для меня. эта строка добавляет наблюдателя для приложений.

+0

Пробовал это уже. – user2125688

1

У меня была аналогичная ситуация, когда я получил это сообщение, а затем сбой, если бы попытался его снова купить. Для меня это похоже на то, что finishTransaction не выполнен (по какой-либо причине). Согласно моим журналам, он предоставляет обновленную транзакцию SKTransactionStateFailed, позволяющую мне отправить finishTransaction.

Затем я регистрирую в своем приложении, что он фактически загрузил данные/приобрел BOOL/whatever и представил пользовательский интерфейс, если им нужно загрузить его снова. Кажется, у вас нет проблем с последующими загрузками.

Чтобы предотвратить сбои, я включил:

[[SKPaymentQueue defaultQueue] removeTransactionObserver:self]; 
Смежные вопросы