застрял с учетной записью песочницы - PullRequest
3 голосов
/ 24 января 2010

Я создал тестовую учетную запись для проверки покупок в приложении. Я мог купить, и покупка была успешной. После этого я обнаружил ошибку в навигации. Я исправил ошибку, создал другую учетную запись и удалил учетную запись, в которую я вошел в предыдущую сессию. Теперь я не могу больше проверять покупки в приложении, так как магазин приложений автоматически регистрирует меня с учетной записью-призраком, которой уже нет. Меня просят ввести пароль только несмотря на то, что перед каждым сеансом отладки я выхожу из Магазина в Настройках и удаляю предыдущую версию приложения. Как мне сбросить это?

Спасибо

Нава

Ответы [ 3 ]

1 голос
/ 17 декабря 2013

У меня была такая же проблема. Вот что решило мою проблему:

  1. Настройки -> Сброс -> Сбросить все настройки
  2. Настройки -> iTunes & App Store -> Выйти
  3. Удалить приложение
  4. Перезапустите приложение из XCode

ОБНОВЛЕНИЕ : Я понял, что проблема в том, что в моем коде нет этой строки:

[[SKPaymentQueue defaultQueue] finishTransaction:tran];

Это означает, что моя старая транзакция не была завершена, и iPhone пытался завершить старые транзакции, которые произошли раньше. Когда я добавил эту строку в свой код, запрос старого пароля пользователя больше не выполнялся.

1 голос
/ 11 ноября 2014

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

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

    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];

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

Чтобы исправить это я добавил:

SKPaymentQueue *queue = [SKPaymentQueue defaultQueue];
for (SKPaymentTransaction *transaction in queue.transactions) {
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}

ДО того, как я добавил наблюдателя транзакции, т.е. это:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

Также в

(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

функция, я добавил эту строку кода:

[queue finishTransaction:transaction];

в случаях SKPaymentTransactionStateRestored и SKPaymentTransactionStateFailed оператора switch. Не добавляйте его в купленное состояние, потому что вам не разрешено называть финиш на этом из того, что я знаю.

Я не уверен, какой из двух вышеперечисленных шагов исправил ошибку, потому что она сохранялась до тех пор, пока я не вышел из моего iPhone, не удалил приложение, не выключил его и не произвел чистую перестройку / установку, которая наконец перестала спрашивать меня пароль для аккаунта с ошибками. Надеюсь, это кому-нибудь поможет.

РЕДАКТИРОВАТЬ: (11/12/15)

Итак, я выяснил причину взлома учетных записей в песочнице. Это произошло после восстановления покупок, затем нажатия клавиши home, повторного открытия и повторного нажатия кнопки восстановления, что вызвало сбой. Восстановление осталось в очереди, и описанный выше процесс был единственным способом выйти из всплывающих окон с запросом пароля.

Чтобы остановить это, я добавил:

[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];

до функции tearDown (вызываемой applicationDidEnterBackground :) моего контроллера основного вида перед тем, как я установил в диспетчере покупок объект из приложения. Я думаю, что произошло то, что я добавил объект в качестве наблюдателя транзакции более одного раза, и это вызывало странное поведение. Судя по всему, это, похоже, полностью устранило проблему, потому что я больше не мог воссоздать ошибку.

0 голосов
/ 13 августа 2010

То есть вы имеете в виду, что даже если вы зайдете в «Настройки» -> «Магазин» -> «Выйти», вы все равно получите имя пользователя из предыдущей тестовой учетной записи? Вы также пытались удалить приложение с вашего устройства? Это исправило аналогичную проблему для меня.

...