IPhone In-App Store Store Ошибка комплекта -1003 "Не удается подключиться к iTunes Store"
Я работаю над добавлением покупок в приложении и смог создать и протестировать покупки в приложении с помощью Store Kit (yay!). Во время тестирования я использовал свое приложение таким образом, чтобы приложение могло вызвать крах средней покупки (так что я предполагаю, что нормальный цикл получения paymentQueue: updatedTransactions и call finishTransaction был прерван).
Теперь я не могу успешно выполнить какие-либо транзакции и вместо этого получаю только транзакции с транзакциейState SKPaymentTransactionStateFailed, когда вызывается payQueue: updatedTransactions.
С транзакцией .error.code -1003 и транзакцией .error.localizedDescription является "Не удается подключиться к iTunes Store"!
Я попытался удалить все продукты из iTunesConnect и перестроил их с помощью разных идентификаторов, но это не помогло. Я также попытался использовать приложение App Store, чтобы действительно подключиться к реальному магазину приложений и загружать некоторые приложения, поэтому у меня есть возможность подключения. Наконец, я посетил приложение "Настройки: Магазин", чтобы убедиться, что я вышел из своей обычной учетной записи магазина приложений.
Ответы
Ответ 1
У меня была аналогичная ситуация, и я отказался от сетевого трафика iPhone, чтобы узнать, что происходит. Я обнаружил, что вместо обычного песочницы был связан обычный магазин. Это помогло удалить приложение с устройства, сделать его чистым и построить/установить его снова. Очевидно, что-то с профилем развития пошло не так.
Обновление:. Чтобы сбросить сетевой трафик iPhone, не связанного с взломом, просто используйте Internet Sharing на вашем Mac и настройте iPhone для использования вашего Mac WiFi. Тогда tcpdump -n -i en1
на вашем Mac выполнит трюк.
Ответ 2
Если вы получаете сообщение об ошибке 0 "Не удается подключиться к iTunes Store" (что я понимаю, это не ошибка -1003, о которой спрашивал OP, но также ведет поиск в Интернете ошибки 0), это может быть вызвано двумя возможные проблемы:
- Вы передаете неправильный идентификатор продукта. Если это произойдет, вы получите сообщение об ошибке 0 после вызова
-[SKPaymentQueue addPayment:]
, прежде чем вы получите всплывающее окно с просьбой подтвердить платеж.
- Ваш тестовый пользователь стал недействительным. Это может произойти, если вы случайно заходите в App Store со своим тестовым пользователем. Когда это произойдет, вы получите сообщение об ошибке 0 после ввода пароля для подтверждения платежа.
Чтобы исправить проблему №1, введите правильный идентификатор продукта. Чтобы устранить проблему №2, создайте нового тестового пользователя в iTunes Connect и, возможно, удалите старого пользователя теста.
Ответ 3
У меня была аналогичная проблема, я получал сообщение "Can not connect to iTunes Store" с кодом = 0. Именно так я решил это, попробовав все другие ритуальные советы, найденные в Интернете, от повторной загрузки моих сертификатов, чтобы сбросить все настройки моего устройства, чтобы пожертвовать девственной черной козой:
В итоговой сводке для приложения у меня был номер версии в поле "сборка", но ничего не было в поле "версия". Это показалось мне странным, поэтому я переместил номер версии с "build" на "version". Это привело к вышеупомянутой ошибке. Перемещение номера версии обратно в "сборку" разрешило ошибку.
Ответ 4
Добавьте нового тестового пользователя для своего приложения.
Ответ 5
Убедитесь, что у вас есть правильная дата и время, установленные в настройках. иначе он не сможет создать SSL-соединение в магазине!
Ответ 6
У меня была такая же ошибка, и после прочтения некоторых потоков на форумах разработчиков, я reset настроек на моем устройстве (Настройки → Общие → Reset → Reset Все настройки), который очистил его. Это казалось радикальным, но это сработало.
Ответ 7
У меня была такая же ошибка, которая, казалось, выскочила из ниоткуда (в один прекрасный день работала нормально, но на следующий день она давала мне эти ошибки примерно 2 раза в 3 раза, я пытался проверить свою покупку в приложении).
Затем я посетил App Store (при попытке сделать еще одну реальную покупку) и понял, что у них есть новое пользовательское соглашение, которое они хотели проверить. После того, как я это сделал, когда я вернулся в свое приложение и снова попробовал пробную покупку, он работал нормально и с тех пор не имел никаких ошибок. Поэтому я подозреваю, что получаю ошибку, потому что они хотели, чтобы я проверил новое пользовательское соглашение.
Теперь мне интересно только, есть ли способ для моей покупки в приложении переслать это приглашение моим пользователям, а не давать им таинственную ошибку?
Ответ 8
В SKPaymentTransactionState
указано, что SKPaymentTransactionStateFailed
до того, как ваш запрос будет добавлен в очередь сервера.
@class SKPayment;
enum {
SKPaymentTransactionStatePurchasing, // Transaction is being added to the server queue.
SKPaymentTransactionStatePurchased, // Transaction is in queue, user has been charged. Client should complete the transaction.
SKPaymentTransactionStateFailed, // Transaction was cancelled or failed before being added to the server queue.
SKPaymentTransactionStateRestored // Transaction was restored from user purchase history. Client should complete the transaction.
};
typedef NSInteger SKPaymentTransactionState;
И в SKPaymentTransaction
Обсуждение ошибок в описании класса говорит:
Свойство error undefined, за исключением случаев, когда для параметра transactionState установлено значение SKPaymentTransactionStateFailed
. Ваше приложение может прочитать свойство ошибки, чтобы определить, почему транзакция не удалась.
Итак, transaction.error.localizedDescription "Не удается подключиться к iTunes Store"! - это общее сообщение об ошибке. Я также регулярно получаю это сообщение об ошибке при тестировании моих покупок InApp.
Некоторые советы, которые вы можете сделать, это
-
Извлеките все продукты из магазина приложений с помощью SKProductsRequest
и проверьте его response.products
на свой запрос productIdentifier
.
для этого использования
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:[objProducts allKeys]]];
//pass product identifier array as argument
[request start];
И ответ Catch в:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
NSArray *myProduct = response.products;
}
Итак, вы можете решить, можете ли вы общаться с магазином приложений. и ваш идентификатор продукта есть.
- Убедитесь, что вы используете тестовую учетную запись пользователя приложения для тестирования.
- И вы используете то же самое приложение-идентификатор, настроенное в App Purchase.
спасибо
Ответ 9
Что сработало для меня, так это удалить мое приложение из тестового устройства, а затем установить новую копию из Xcode.
Ответ 10
Я возился с магазином приложений, а затем вернулся к настройкам/магазину для выхода. Я делал это 3 раза, каждый раз пересматривая свое приложение и добавляя отладочный вывод NSLog, и теперь я могу продолжить тестирование кода покупки внутри приложения без ошибки -1003. Я не уверен, почему именно эта работа снова работает, но я уверен, что это не изменение кода с моей стороны, поскольку все, что я делал, это добавление NSLogs и повторное выполнение моего приложения.
Ответ 11
Да, если вы сначала подключили свой iPad/iPhone к другому компьютеру и теперь используете его на другом, вы абсолютно должны выйти из магазина на своем iPad, войти в систему с обычной учетной записью в ITunes на вашем MAC-адресе, затем Sync.
Кроме того, убедитесь, что ваш iPad "WIFI" включен...
Ответ 12
Я очистил все целевые объекты в XCode и вручную удалил приложение с моего устройства, а затем построил и запустил его из XCode и устранил аналогичную проблему (такое же сообщение об ошибке, но другой код ошибки: -1009)
Ответ 13
К сожалению, у меня возникла проблема, которая не была зарегистрирована здесь. In-App-Purches не будут работать, пока вы не примете все контракты, связанные с app-и-app-purcheses. Поэтому убедитесь, что вы (или ваш клиент) правильно настроили все контракты в iTunesConnect, они должны отображаться в разделе "Контракты в действии", чтобы ваши покупатели работали.
Ответ 14
Наша проблема заключалась в том, что в Itunes Connect у нас был неправильный идентификатор пакета. Кто-то создал приложение перед началом работы, и нам пришлось отредактировать приложение и установить его appId на новый.
Ответ 15
У меня возникли две проблемы:
1) Я скопировал код IAP из другого (рабочего) приложения, но пропустил настройку моего наблюдателя:
observer = [[IAPHelper alloc] init]; [[SKPaymentQueue defaultQueue] addTransactionObserver: observer];
2) В настройках моего устройства вошел в iTunes в iTunes. Вы можете использовать только тестового пользователя в песочнице - я вышел из системы, и он снова работал.
Ответ 16
Просто выйдите из своей учетной записи iTunes (не заходите в свою тестовую учетную запись сейчас!) и запустите свою программу. Когда покупка inapp запрашивает ваши данные для входа в систему, вы должны ввести информацию о своей тестовой учетной записи.
Ответ 17
Я пробовал каждое предлагаемое здесь решение, но безрезультатно. В моем случае у меня был идентификатор пакета wild-card, начинающийся с того же имени домена, что и тот, который я использовал при создании идентификатора пакета для профиля обеспечения закупок в приложении.
Вот как я исправил проблему и могу помочь вам исправить вашу проблему (см. приложенную):
1) Подключите iPhone к Mac.
2) В разделе "Устройства" (в меню "Xcode" > "Окно" > "Окно организатора" ) выберите "Профили профилей" для вашего iPhone. Вы увидите все профили обеспечения, которые в настоящее время проживают на вашем iPhone.
3) Осторожно удалите все профили подготовки, начиная с определенного имени домена в идентификаторе пакета (com.MYDOMAIN. *), особенно тех, которые используют wild-card, за исключением того, который вы создаете специально с возможностью делать In-App покупка (com.MYDOMAIN.inappidentifier).
4) Установите приложение заново и протестируйте свою реализацию с помощью нового тестового пользователя iTunes connect (песочница)
SCREENSHOT:
![enter image description here]()
Ответ 18
Я застрял в течение 2 дней, здесь мое решение:
- Удалить все приложения в приложении.
- Удалить новые приложения в приложении.
- Создайте тестер песочницы.
- Выйдите из моей учетной записи Apple с устройства (iPad), а затем попробуйте купить продукт.
- Он попросит логин, а затем повторите вход с учетной записью тестового редактора.
- Покупка продолжается.
Я думаю, что важна учетная запись тестера песочницы, я не использовал ее раньше, так как всегда получал ошибку-0.
Ответ 19
В моем случае,
Я пробовал все в Интернете, но ничего не получилось.
Apple фактически нарушила производственную платежную систему и песочницу. Мне просто пришлось подождать два дня, и он начал работать.