Устранение неполадок при загрузке xcode [duplicate]

В следующем примере, который я написал, показано, как

  • обрабатывать асинхронные HTTP-вызовы;
  • Подождать ответа от каждого вызова API;
  • Использовать шаблон promise ;
  • Используйте шаблон Promise.All для объединения нескольких HTTP-вызовов;

Этот рабочий пример является автономным. Он будет определять простой объект запроса, который использует объект window XMLHttpRequest для совершения вызовов. Он будет определять простую функцию, чтобы дождаться завершения кучи обещаний.

Контекст. В этом примере запрашивается конечная точка Spotify Web API для поиска объектов playlist для заданного набора строк запроса:

[
 "search?type=playlist&q=%22doom%20metal%22",
 "search?type=playlist&q=Adele"
]

Для каждого элемента новый Promise запустит блок - ExecutionBlock, проанализирует результат, заплатит новый набор обещаний на основе массива результатов, который представляет собой список объектов Spotify user и выполняет новый HTTP-вызов в ExecutionProfileBlock асинхронно.

Затем вы можете увидеть вложенную структуру Promise, которая позволяет вам генерировать множественные и полностью асинхронные вложенные HTTP-вызовы и присоединять результаты к каждому подмножеству вызовов через Promise.all.

NOTE Recent Spotify search API-интерфейсам потребуется указать токен доступа в заголовках запроса:

-H "Authorization: Bearer {your access token}" 

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

var spotifyAccessToken = "YourSpotifyAccessToken";
var console = {
    log: function(s) {
        document.getElementById("console").innerHTML += s + "
" } } // Simple XMLHttpRequest // based on https://davidwalsh.name/xmlhttprequest SimpleRequest = { call: function(what, response) { var request; if (window.XMLHttpRequest) { // Mozilla, Safari, ... request = new XMLHttpRequest(); } else if (window.ActiveXObject) { // Internet Explorer try { request = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { try { request = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) {} } } // State changes request.onreadystatechange = function() { if (request.readyState === 4) { // Done if (request.status === 200) { // Complete response(request.responseText) } else response(); } } request.open('GET', what, true); request.setRequestHeader("Authorization", "Bearer " + spotifyAccessToken); request.send(null); } } //PromiseAll var promiseAll = function(items, block, done, fail) { var self = this; var promises = [], index = 0; items.forEach(function(item) { promises.push(function(item, i) { return new Promise(function(resolve, reject) { if (block) { block.apply(this, [item, index, resolve, reject]); } }); }(item, ++index)) }); Promise.all(promises).then(function AcceptHandler(results) { if (done) done(results); }, function ErrorHandler(error) { if (fail) fail(error); }); }; //promiseAll // LP: deferred execution block var ExecutionBlock = function(item, index, resolve, reject) { var url = "https://api.spotify.com/v1/" url += item; console.log( url ) SimpleRequest.call(url, function(result) { if (result) { var profileUrls = JSON.parse(result).playlists.items.map(function(item, index) { return item.owner.href; }) resolve(profileUrls); } else { reject(new Error("call error")); } }) } arr = [ "search?type=playlist&q=%22doom%20metal%22", "search?type=playlist&q=Adele" ] promiseAll(arr, function(item, index, resolve, reject) { console.log("Making request [" + index + "]") ExecutionBlock(item, index, resolve, reject); }, function(results) { // Aggregated results console.log("All profiles received " + results.length); //console.log(JSON.stringify(results[0], null, 2)); ///// promiseall again var ExecutionProfileBlock = function(item, index, resolve, reject) { SimpleRequest.call(item, function(result) { if (result) { var obj = JSON.parse(result); resolve({ name: obj.display_name, followers: obj.followers.total, url: obj.href }); } //result }) } //ExecutionProfileBlock promiseAll(results[0], function(item, index, resolve, reject) { //console.log("Making request [" + index + "] " + item) ExecutionProfileBlock(item, index, resolve, reject); }, function(results) { // aggregated results console.log("All response received " + results.length); console.log(JSON.stringify(results, null, 2)); } , function(error) { // Error console.log(error); }) ///// }, function(error) { // Error console.log(error); });

Я подробно рассмотрел это решение здесь .

74
задан Jayprakash Dubey 6 January 2015 в 12:07
поделиться

16 ответов

Я пытался часами не повезло, после ожидания еще нескольких часов я получил ответ от поддержки Apple, требуя дополнительной информации. Когда я решил повторить проблему снова для скриншотов, я решил использовать номер сборки 2.0, я надеялся, что, возможно, ему нужна была большая версия. Это сработало! Всюду в сети, которую я читал, говорилось, что 1.0 к 1.1 будет работать нормально ... или 1.0.0 до 1.0.1. Мне по какой-то причине приходилось идти от 1.0 до 2.0.

Или всегда есть вероятность, что ждать еще несколько часов.

23
ответ дан crt79 28 August 2018 в 15:39
поделиться

По какой-то причине Apple предоставила поле сборки на вкладке «Общие» в Xcode.

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

Предполагается, что здесь нужно обновить номер сборки только с использованием того же номера версии.

В моем случае у меня есть Версия приложения 0.0.1, каждый раз, когда я загружаю двоичный файл, мне нужно изменить номер сборки, например: Загрузить сборку 0.0.0 - Отклонить двоичную и загрузку сборки 0.0.1 - Отклонить двоичную и загрузочную сборку 0.0.2

2
ответ дан Adromil Balais 28 August 2018 в 15:39
поделиться

Проверьте, если вы использовали сценарий запуска:

, если ответ «да», вам необходимо отправить свои изменения на свой git-сервер, тогда сценарий увеличит ваш построить номер версии автоматически!

1
ответ дан Alfy 28 August 2018 в 15:39
поделиться
1
ответ дан Anibal Lamego 28 August 2018 в 15:39
поделиться

Решена эта проблема, изменив номер сборки в разделе «Общие» -> «Идентичность» в целевой структуре проекта Xcode. Затем перейдите в меню «Продукт», выберите «Очистить» и «Создать приложение».

From Build : 1
To Build   : 1.2

Наконец, повторите процесс подачи заявки, запустив Product -> Archive и следуя подсказкам на экране.

1
ответ дан BenJaminSila 28 August 2018 в 15:39
поделиться

Моя проблема заключалась в том, что номер сборки, который я обновлял на вкладке «Общие» Xcode, не менял версию пакета в plist приложения - так что загрузчик думал, что я загружаю одну и ту же сборку каждый раз, независимо от того, какой номер сборки я использовался. Как только я изменил версию пакета в plist, все работало нормально.

1
ответ дан bmueller 28 August 2018 в 15:39
поделиться

Я тоже это испытал, просто увеличьте число сборки, исправленное для меня. Я изменил версию сборки на 1.0.1, и она сработала. Это можно найти в закладке «Общие» в Xcode. Перед отправкой в ​​App Store убедитесь, что вы архивируете и проверяете снова.

4
ответ дан DevC 28 August 2018 в 15:39
поделиться

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

Теперь, однако, я полностью застрял. Я только что добавил расширение «Сегодня» для своего приложения, и теперь, когда я пытаюсь загрузить его, он всегда возвращается с 4238, независимо от того, какую комбинацию версии / сборки я вставляю. Это сумасшествие, было у него уже 2 часа.

Мне интересно, есть ли какой-нибудь способ настройки сборки, который может заставить загрузчика думать, что есть два бинарных файла?

У меня есть отдельный профиль распространения для основного приложения и расширения, я также «Только для создания активных архитектур» установлено значение «НЕТ». Это все, что я могу думать о том, что это испортит это.

Любые мысли?

1
ответ дан Emile Bennett 28 August 2018 в 15:39
поделиться

Обходной путь изменения номера сборки работает для меня со следующим контекстом:

  • статус версии приложения - «Подготовка к отправке»
  • - новая версия номер сохранен в iTunesConnect (нажатие кнопки сохранения на странице версии в iTunesConnect)
  • CFBundleShortVersionString сопоставляет номер версии в iTunesConnect (например, «1.2»)
  • CFBundleVersion в Info.plist увеличивается (например, 1.2.1)

Таким образом, несколько версий связаны с версией iTunesConnect.

Вот как это выглядит в iTunesConnect (1.2 - это номер короткой версии, 1.2 и 1.2.1 - версии пучка): [/g0]

59
ответ дан Etienne 28 August 2018 в 15:39
поделиться

Вам не нужно менять номер версии, просто измените номер сборки. Но вы должны знать, что номер сборки должен быть выше, чем последняя загруженная вами версия. Например, ваш номер версии 2.6.8, а номер сборки 2.6.8, вы можете изменить номер сборки на 2.6.9. Если вы измените номер сборки на 2.6.8.0, произойдет ошибка, скажем, что the Build number(2.6.8.0) must be higher than the exist one(2.6.8). Таким образом, ключевым моментом является номер сборки.

@Jayprakash Dubey @ Tenaciousd93

4
ответ дан guozqzzu 28 August 2018 в 15:39
поделиться

Решил эту проблему, увеличив версию версии на 1 вместо под-версии. то есть от 1,0 до 2,0 вместо 1,0-1,1

10
ответ дан Jayprakash Dubey 28 August 2018 в 15:39
поделиться

Я загрузил приложение, но для отсутствующих скриншотов для 3.5 ", я получил ту же ошибку. И не смог загрузить снова из xcode.

(Так что я делаю ipa-файл, в организаторе xcode и экспорт в качестве ipa) .Но когда я нажимаю на сборку в itunesconnect, тогда он принимает старый загруженный файл (дайте мне возможность выбрать). И после этого, после того, как я сохранил это, я получил вариант для отправки для просмотра.

(Если вы перейдете на вкладку предварительного выпуска в itunesconnect, вы увидите ранее загруженное приложение.)

0
ответ дан karim 28 August 2018 в 15:39
поделиться

Я попробовал ApplicationLoader 2.9.1, он работает для меня. ApplicationLoader 2.9.1 можно скачать с itunes connect.

1
ответ дан kaz29 28 August 2018 в 15:39
поделиться

В моем случае мне пришлось сделать число сборки выше, чем последний номер сборки, который я загрузил. У меня было приложение iTunes Connect со сборкой номер 3, затем было перезаписано приложение с нуля, и я попытался загрузить новое приложение со строкой номер 1. Я получил ту же ошибку, после того как я изменил номер сборки 4, он работал нормально.

1
ответ дан Michal Gumny 28 August 2018 в 15:39
поделиться

Я думаю, поскольку Apple интегрировала тестовый полет в itunesconnect, есть разница между версией и строкой (которая является формулировкой, которую они используют в настройках проекта -> target-> generalScreen), а в info.plist ее эквивалент - Bundle Version String short "и" Bundle Version ". Здесь формулировка никогда не имела для меня никакого смысла.

Я получил ошибку с версией 2.2 и строкой 2.2. Я изменил его на версию 2.2 и построил 1 (потому что это была моя первая загрузка), и это сработало.

2
ответ дан theguy 28 August 2018 в 15:39
поделиться

Пробовал много разных номеров сборки. Единственный вариант, который сработал для меня, - это дать номер с цифрой 4 цифры: 1.1.0.1 (1.1 - номер моей версии приложения в iTunes Connect).

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

2
ответ дан winterized 28 August 2018 в 15:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: