Подтвердить что ты не робот

Нажмите "Продолжить" и войдите в систему, чтобы проверить наличие загрузок. [Песочница]

Время от времени я получаю очень неприятный диалог с текстом: "Нажмите" Продолжить "и войдите, чтобы проверить наличие загрузок". Если я вхожу в систему (с пользователем песочницы) или коснитесь Отмена, диалоговое окно снова будет отображаться снова.

Я использую Non-Renewing Subscriptions и Non-Consumable products.

Любые идеи, как избавиться от этого диалога?

Спасибо

/Martin

4b9b3361

Ответ 1

Похоже, что консенсус заключается в следующем:

  • Проблема началась в iOS 6
  • Кажется, что это не происходит, если вы не вошли в Настройки с идентификатором Apple.
  • Включение режима полета, а затем выход из любого идентификатора Apple, который вы вошли в систему, как в "Настройки", а затем выключение режима полета в течение примерно 15 минут остановит сообщения некоторое время.
  • Очистка устройства и восстановление не заставляют его уходить.
  • Кто-то подал ошибку об этом, и он был отмечен Duplicate, поэтому Apple, похоже, знает об этой проблеме, но пока ничего не хочет делать.
  • Есть предположение, что это происходит, когда ваше устройство зарегистрировано в Песочнице с одним ID и в реальном магазине с другим. Если вы тестируете покупки в приложении, выйдите из своего основного идентификатора, прежде чем приступать к тестированию.

Вот еще несколько обсуждений по теме:

https://discussions.apple.com/message/21492551?ac_cid=tw123456#21492551

https://discussions.apple.com/thread/4412889?tstart=0

Ответ 2

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

Ответ 3

Я исправил это самым тривиальным образом. Когда появится AlertView, просто нажмите "Продолжить" и войдите в эту учетную запись. (В моем случае он сохранил даже старую учетную запись, удаленную из списка тестовых пользователей в iTunesConnect). Я получил предупреждение для 5 или 6 аккаунтов, с которыми тестировал свою InAppPurchase, но после того, как я подписал контракт со всеми из них, я больше не получаю его. Надеюсь, это поможет.

Ответ 4

У меня такие же проблемы.

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

Код для этого:

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

У моего приложения есть сложная система проверки, которая должна быть передана до того, как я вызову метод выше. Если пользователь покидает приложение или теряет интернет-соединение в течение этого периода, в очереди на платеж будут оставлены покупки.

Один из способов решения этой проблемы - просто изменить приложение на "finishTransaction" на каждую транзакцию, которую вы получаете, - поэтому очистка очереди платежей. Обязательно войдите во все учетные записи, которые могут быть связаны с покупками в очереди платежей (AKA - все тестовые учетные записи, которые вы использовали для этого приложения).

Ответ 5

Я добавил

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

до конца моего appDelegate didFinishLaunchingWithOptions, и он исправил проблему для меня.

Ответ 6

Все еще присутствует в 2017 году!

Похоже, что проблема с песочницей: несмотря на то, что вы выходите из учетной записи пользователя песочницы, что-то запоминает идентификатор и неполные транзакции для этого пользователя.

Я очищаю их следующим образом:

  • Вход в систему как пользователь проблемы при появлении запроса,
  • Выполнение функций "восстановления покупок" в приложении для этого пользователя (повторное ввод учетных данных при запросе).

Это очищает все неполные транзакции (если ваша функциональность "восстановить покупки" верна), и, таким образом, сообщение не будет отображаться при последующих запусках (до тех пор, пока транзакция песочницы не будет оставлена ​​незавершенной снова...)

Ответ 7

То, что было исправлено для меня, было похоже на ответ kgaidis, но чтобы сделать это проще, я просто разместил несколько: SKPaymentQueue.defaultQueue(). finishTransaction (транзакция как SKPaymentTransaction)

в приобретенное состояние функции updatedTransactions. Я разместил там около 20 и запустил приложение. после нескольких песочниц в покупках приложений проблема исчезла.