Покупки в приложении «Не удается подключиться к iTunes Store»


98

У меня проблемы с тестированием покупок в приложении. Я получаю действительные идентификаторы продуктов, но при покупке получаю ужасное сообщение «Не удается подключиться к iTunes Store». Интересно то, что восстановление покупок вроде работает - выскакивает логин iTunes.

У меня есть: - Проверено, что мои покупки в приложении разрешены для продажи - Проверено, перепроверено мой исходный код для синхронизации с документацией Apple - Добавлены подходящие тестовые пользователи - идентификатор приложения не содержит подстановочных знаков - покупки в приложении связаны с приложение (само приложение находится в состоянии отклонения разработчика, покупки готовы к отправке) - ожидал - переустановил приложение, очищенное решение, все вещи вуду


26
+1 за «все про вуду» - не правда ли!
Крейг Уоткинсон,

2
Apple, зачем вы это так усложняете !!!
Borzh 06

Ответы:


113

Убедитесь, что вы вышли из всех производственных учетных записей iTunes на устройстве.

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


1
Моя ошибка заключалась в том, что я просто не настраивал пользователя песочницы, я забыл об этом шаге. И не входите в него из раздела «Настройки» >> iTunes на устройстве b / c, которое его сломает. Подождите и сделайте это во время самого тестирования.
Nathan Prather

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

Я тестирую это в симуляторе, так что это не должно быть проблемой, верно?
Усама бин Аттик,

1
вышел из всех учетных записей iTunes. его подсказка мне для входа требуется, а затем пересечение не удается. использовал много учетных записей тестера песочницы, но не работает.
BLACK HoLE 04 окт.'18

Для меня это тоже не работает ... Пытался создать много учетных записей, некоторые с зарегистрированным пользователем песочницы iTunes, другие без зарегистрированного пользователя, даже без подтверждения электронной почты, ничего не работает!
Borzh 06

50

см. Часто задаваемые вопросы о покупках из приложения: не удается подключиться к iTunes Store

Your app is running in the Simulator, which does not support In-App Purchase

Для тестирования в покупках приложений всегда используйте реальные устройства.


У вашего приложения нет версии пакета (CFBundleVersion). <- Это то, что меня спасло. Спасибо за ссылку.
daltonclaybrook

25

Новичкам: убедитесь, что у вашего продукта для покупок в приложении Ready to Submitнет «недостающих метаданных». В моем случае не хватало локализации группы подписки.

введите описание изображения здесь


1
Спасибо! В моем случае отсутствовала локализация отображаемого имени.
Джастин

В моем IAP отображается "Ожидание загрузки". Я все еще получаю сообщение об ошибке
Вайбхав Джавери

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

10

У меня была эта проблема, и я убежден, что это ошибка. Я отправил отчет об ошибке с идентификатором ошибки 10108270

Проблема, похоже, заключается в том, что тестовый пользователь «заблокирован» и может иметь какое-то отношение к попытке совершить покупку в уже выпущенном приложении с этой учетной записью.

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


4
Я создал нового тестового пользователя, но это не помогло.
arkir

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

Я создал новую тестовую учетную запись, и покупка в приложении снова заработала. Спасибо!
Miha Hribar

Создание нового тестового пользователя решило проблему для меня. (Несколько дней назад я получил уведомление при попытке использовать моего старого тестового пользователя, что он был отключен, поэтому мне пришлось снова включить его. Вскоре после этого я начал получать Cannot connect to iTunes storeошибку. Но как только я создал новый тест пользователь, покупки снова сработали.)
Эндрю

у меня работал новый пользователь. просто попробуйте, прежде чем делать что-нибудь еще.
Охан Окбай

7

Эта проблема сохраняется и в 2016 году. Невероятно. Вот мое решение:

Добавьте номер сборки. Target> General> Identities> Build.


2
НЕВЕРОЯТНО. Это все еще проблема в 2018 году. Я не использую номер сборки в режиме отладки, потому что увеличиваю его только для производственных версий. Спасибо, что разместили это.
Стивен Петерсон

3

Это старая ветка, связанная с проблемой, с которой я столкнулся сегодня.

В моем случае я мог до вчерашнего дня тестировать покупки в приложении на своем устройстве, но сегодня оно перестало работать. Оказалось, что Apple предложила мне просмотреть «Поправку для платных приложений» и принять ее. Как только я согласился с поправкой (не читая ее, конечно), все снова заработало. Не нужно было создавать нового тестового пользователя или какое-либо другое решение.

Может быть много причин, по которым покупки в приложении не работают, но убедитесь, что вы правильно настроили, itunesconnectиначе вы не сможете протестировать покупки в приложении.


2

У меня та же проблема. Для меня это происходит после этого:

  • Установите приложение на устройство, на котором выполнен вход в британский аккаунт iTunes.
  • Запустите приложение и используйте тестового пользователя, установленного в США.
  • Отображается сообщение о том, что учетная запись действительна только в США. Закрывает приложение и автоматически запускает iTunes.
  • Снова откройте приложение и повторите покупку. Получите продукты, но без других обратных вызовов или ошибок.

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

Чтобы продолжить тестирование своих IAP, попробуйте любое из этих:

  1. Удалите профиль обеспечения в области настроек, удалите приложение и выйдите из магазина в настройках. Затем перейдите в XCode и измените удостоверения подписи на «Не подписывать», чтобы затем вернуть их (я знаю, как это звучит :), но попробуйте) ИЛИ
  2. Выполните полный сброс всех настроек на вашем устройстве (Настройки -> Общие ...). Очевидно, вы потеряете любые настройки на этом устройстве ...
  3. Закройте приложение iTunes на устройстве (многозадачное меню) и выйдите из магазина в Настройках.

Если ничего из вышеперечисленного не работает, это может быть проблема на платформе IAP, см. Мои комментарии ниже.


Спасибо, но у меня не сработали ни один из способов 1 или 2. По-прежнему не удается подключиться к iTunes. :(
arkir

Собственно, попробовал и тоже не могу! У меня такое чувство, что это проблема платформы СЕГОДНЯ / НЕДАВНО. Но я не могу найти ссылку, чтобы подтвердить это (статус). Ах! Я оставлю это на несколько часов и посмотрю, так ли это, и это что-то постороннее для разработчиков
Хуан Фран Хименес

Пробовали убить приложение iTunes на устройстве (многозадачное меню) и выйти из магазина в Настройках?
Хуан Фран Хименес

Позвольте мне добавить, что Game Center (по крайней мере, песочница) работал нестабильно последние 5 дней или около того. Только вчера вечером стало лучше работать. Я упоминаю об этом, потому что мой код IAP не изменился с момента моего ответа, и теперь он работает. Я склонен думать, что на платформе Apple IAP была ошибка, и это тоже как-то было связано с Game Center.
Хуан Фран Хименес


1

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


У меня тоже была эта проблема. Иногда помогает создание нового пользователя. Также вам не нужно использовать реальный адрес электронной почты. Я прошел - ## в конце своего и продолжаю добавлять новые.
Иеремия

1

Мне удалось сделать покупки в приложении на iPhone, но не на iPad (11.0.2). Я пробовал использовать все упомянутые решения, но ничего не помогает. Попробовав все другие возможности, я наконец смог заставить его работать.

При создании тестовой учетной записи в iTunes Connect не проверяйте идентификатор электронной почты. Если он подтвержден, iap возвращает ошибку «Не удается подключиться к iTunes». Выглядит странно, но у меня так получилось. В iPhone, независимо от подтверждения адреса электронной почты, я могу совершать покупки с использованием тестовой учетной записи.


Я прочитал это, и сначала это звучало безумно, но на самом деле это сработало. Была точно такая же проблема с тестовой учетной записью, которая не могла совершать покупки на iPad, но нормально работала на iPhone. Очень странно!
axanpi

Да. Это странно. Наше приложение было отклонено из-за этой проблемы, и мне пришлось объяснить команде разработчиков Apple причину, и оно было одобрено.
Аниш

1

Вот исчерпывающий контрольный список, если вы получили эту ошибку «не удается подключиться к iTunes Store»:

  • Убедитесь, что у вас есть пользователь песочницы, созданный в App Store Connect.

  • Симулятор НЕ поддерживает покупку в приложении: протестируйте на реальном устройстве

  • Песочница может быть недоступна. Проверьте статус системы Apple
  • Убедитесь, что у вашего приложения есть версия пакета (CFBundleVersion)
  • Убедитесь, что товар доступен для продажи. Вы создали его в App Store Connect?

  • В предыдущей версии iOS 12 был выполнен выход из любых производственных учетных записей iTunes на устройстве. В противном случае вы можете просто войти в приложение для разработчиков со своей учетной записью в песочнице.


0

Эта ошибка также возникла, когда в SKProductsRequest передан неверный NSSet:

Неправильно:

let products = NSSet(objects: ["id1", "id2"])

Верный:

let products = NSSet(objects: "id1", "id2")

0

В моем случае, я просто забыл обработать .failedв transactionState. В частности, SKPaymentQueueue.default().finishTransaction(transaction).


0

Та же проблема возникла у меня, и я проверил проблему, включая форму Apple , я не смог найти решения.

Сегодня при проверке устройства я обнаружил, что следующие

В настройках устройства -> iTunes и App Store обнаружил, что другой идентификатор Apple вошел в систему . Итак, я попробовал выйти из системы и снова проверил покупку InApp, она работала отлично. Поэтому проверьте, связана ли проблема с тем же или нет.

С уважением и уважением, Unnikrishnan.P


0

Мне пришлось зайти в «Настройки»> «iTunes и магазины приложений», затем прокрутить вниз до поля «Учетная запись песочницы» и выйти оттуда. Теперь работает !!!

введите описание изображения здесь


0

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

«Чтобы тестировать или предлагать автоматически возобновляемые подписки, вы должны иметь общий общий секрет или использовать общий секрет для каждого приложения».

Главный общий секрет создается на вкладке «Общий секрет» в разделе «Пользователи и доступ» приложения App Store Connect.

Общий секрет для конкретного приложения создается там, где вы управляете покупками внутри самого приложения.


0

Я починил свой! Если вы получаете сообщение Error Domain=SKErrorDomain Code=2 "Cannot connect to iTunes Store"об ошибке, убедитесь, что вы вставили SKPaymentQueue.default().finishTransaction(transaction). У меня это сработало после того, как я добавил SKPaymentQueue.default().finishTransaction(trans)следующее:

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
    for trans in transactions{
        if trans.transactionState == .purchased {
            print("Successful.")
            SKPaymentQueue.default().finishTransaction(trans)
        } else if trans.transactionState == .failed {
            print("failed!")
            print(trans.error)
            SKPaymentQueue.default().finishTransaction(trans)
        }
    }

Найдено на сайте разработчиков Apple, здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.