Что такое сообщение об ошибке vendorID, связанное с «Не удается подключиться к iTunes» для покупки в приложении?

Вот загадочное сообщение об ошибке:

LaunchServices: не удалось получить идентификатор vendorID

Я предполагаю, что это какой-то сервер Apple, который сейчас работает, и скоро будет в сети.

Задний план:

В моем приложении iOS нет одобренных приложений в приложении, так что это все еще этап, на котором должна быть представлена ​​новая версия приложения вместе с новым продуктом покупки в приложении. В iTunes Connect настроено три тестовых пользователя.

Тестирование до сегодняшнего дня было успешным с покупкой тестовых продуктов и получением ранее приобретенной информации.

Что произошло во время «перерыва»,

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

Что сейчас происходит

Код покупки в приложении запрашивает продукты с использованием инфраструктуры StoreKit и получает их и отображает пользовательский интерфейс соответствующим образом. Таким образом, на данный момент в StoreKit есть хотя бы некоторый уровень успеха.

Когда я нажимаю кнопку пользовательского интерфейса, чтобы запустить код получения-прошлых покупок, я вводим учетные данные для тестового пользователя, и я сижу и жду. Тайм-аут, казалось бы, в течение многих секунд, появляется ошибка «Не удается подключиться к iTunes Store».

Это происходит как на устройстве iPhone, так и на симуляторе.

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

LaunchServices: не удалось получить идентификатор vendorID

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

На iPhone я вышел из своего настоящего пользователя, а затем использовал учетные данные тестового пользователя, а в симуляторе я очистил файлы ~ / Library / Application Support / iPhone Simulator / 6.1 / Library / com.apple.itunesstored / *.

Я перезапустил macbook, то же самое.

Поиск google: + "не удалось получить идентификатор поставщика"

возвращает нулевые реальные результаты. Я в недоумении.

2 Solutions collect form web for “Что такое сообщение об ошибке vendorID, связанное с «Не удается подключиться к iTunes» для покупки в приложении?”

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

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

Я провел краткий тест по двум различным сценариям и смог надежно сделать LaunchServices: failed to get vendorID ошибку LaunchServices: failed to get vendorID под одним из них.

Во-первых, я создал «Пустое приложение» в XCode, используя встроенный шаблон. Я изменил только этот метод:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSLog(@"Vendor ID: %@", [UIDevice currentDevice].identifierForVendor); self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; } 

У этого никогда не было проблемы. И когда я запускал приложение непосредственно в симуляторе, и когда я запускал его (сгенерированные) модульные тесты, он смог получить UUID этого устройства для продавца просто отлично.

Затем я создал «Cocoa Touch Static Library» в шаблоне XCode. Я создал только один метод класса в сгенерированном исходном файле.

 + (void)logDeviceIDs { NSLog(@"Vendor ID: %@", [UIDevice currentDevice].identifierForVendor); NSLog(@"Advert ID: %@", [ASIdentifierManager sharedManager].advertisingIdentifier); } 

Затем я изменил сгенерированный тест

 - (void)testExample { [ReportDevice logDeviceIDs]; } 

И, наконец, я позаботился о том, чтобы изменить цель «ReportDeviceTests» и добавить в AdSupport библиотеку AdSupport . И затем, когда я выполнил тесты, симулятор всплыл, и это результат, который я видел:

 ReportDeviceTests.octest(Tests)' started at 2013-08-04 03:56:00 +0000 Test Suite 'ReportDeviceTests' started at 2013-08-04 03:56:00 +0000 Test Case '-[ReportDeviceTests testExample]' started. 2013-08-03 21:56:00.786 otest[61857:303] LaunchServices: failed to get vendorID 2013-08-03 21:56:00.786 otest[61857:303] Vendor ID: (null) 2013-08-03 21:56:00.787 otest[61857:303] Advert ID: <__NSConcreteUUID 0x24bab30> 5801847F-4679-4701-8B07-28449EF92CB4 Test Case '-[ReportDeviceTests testExample]' passed (0.002 seconds). 

Таким образом, в этом тесте статическая библиотека смогла получить идентификатор рекламы, но не идентификаторForVendor, и была «успешно» способна вызвать failed to get vendorID ошибке failed to get vendorID .

Возможно ли, что вы используете статические библиотеки, которые вы написали, или которые поступают от внешнего поставщика (например, Flurry)? Это потенциальные источники, которые могут привести к аналогичному поведению к последнему из двух тестовых случаев.

Надеюсь, это поможет!

У меня была эта же проблема с запуском тестов с xctool в проекте без приложения-хозяина. То есть, у меня была только тестовая цель. Решение для меня заключалось в том, чтобы добавить цель приложения и установить это как мое приложение-хозяин для целевой цели (общая вкладка для целевой цели). Это, по сути, воссоздает то, что обычно настраивается при создании нового проекта в Xcode. В моем случае мне также пришлось добавить AppDelegate с:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { return YES; }

  • iOS: развертывание и запуск приложения на устройстве через командную строку без джейлбрейка
  • Общие тесты в тестовых наборах XCTest
  • IOS Sandbox Test User account Управление подпиской
  • Проблема с выпуском сервера Xcode: предупреждение. Ошибка службы сборки. Проблема: архив по пути «some / path» неверен
  • Проверьте цель развертывания iOS для статической библиотеки
  • Можно ли запускать тесты XCTest в приложении iOS?
  • Проверьте электронную почту во время тестирования пользовательского интерфейса Xcode?
  • «Не удалось установить приложение. Тестер не имеет доступа к этому приложению ». Ошибка в приложении iOS TestFlight
  • iOS8 - есть ли пример кода UIAutomation из кода?
  • itunes connect песочница требует проверки почты
  • Тестирование модулей iOS: класс реализуется как в
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.