SKPaymentQueue addTransactionObserver запрашивает пароль App Store при запуске после покупки в приложении - PullRequest
56 голосов
/ 14 февраля 2011

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

Однако, для растущего числа моих пользователей, после того, как они завершили успешную покупку в приложении, у них запрашивают свое приложение.Храните пароль каждый раз, когда приложение запускается после этого.Я полагаю, что это происходит при вызове:

[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

, который я вызываю при запуске в соответствии с шагом 6 в руководстве по покупке Apple в приложении:

Я предполагаю, что по какой-то причине серверы покупок в приложении Apple не регистрируют, что транзакция завершилась успешно - дажехотя я звоню

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

, когда транзакция завершена и мой контент успешно загружен.

2 вопроса:

  1. Кто-нибудь еще видитэто?

  2. У кого-нибудь есть предлагаемое исправление?

BOUNTY EDIT :

Этотранзакция, которая была сделана с другим Apple-ID.Вот почему это не может быть завершено, если вы не введете правильные учетные данные в диалоговом окне.Вопрос должен быть либо:

  1. Как я могу предотвратить такие мертвые транзакции (транзакция не была завершена, у пользователя нет сети, тем временем изменяется App-ID)?
  2. Как вы можетеподрезать SkPaymentQueue?

Ответы [ 14 ]

0 голосов
/ 17 августа 2012

Проверьте следующее, как было в моем методе viewDidLoad.Я отклонил приложение, когда Apple захотела, чтобы я перешел от непотребляемых к расходным материалам, однако я оставил следующую строку в своем методе viewDidLoad: (Я думал, что запрос пароля был проблемой при обмене тестового пользователя с обычным пользователем обратнотестовый пользователь)

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

После удаления запрос на пароль остановился.

И я оставил: [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; в, и приложение было одобрено просто отлично.

0 голосов
/ 09 мая 2012

ошибок, связанных с покупками в приложении, исправлено в обновлении iOS 5.1.1 http://support.apple.com/kb/DL1521

0 голосов
/ 07 мая 2012

Удаление и переустановка приложения удалит все старые транзакции, связанные с другой учетной записью itunes. Если вы все еще видите транзакции, отправленные в очередь уведомлений, то, скорее всего, в вашей логике была ветвь, которая не вызывала finishTransaction.

Вам необходимо вызывать finishTransaction для всех транзакций, которые публикуются в paymentQueue: updatedTransactions:, даже транзакции с SKPaymentTransactionStateFailed.

0 голосов
/ 27 октября 2011

Кажется, это неразрешимая проблема :) Я отправлю запрос в службу поддержки Apple ...

...