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

IOS 8 - Не удается установить корпоративное приложение

В нашей компании есть приложение, которое можно загрузить через веб-сайт с помощью Enterprise Distribution.

Enterprise Distribution Site

В iOS 8 Beta 5 нажатие ссылки для загрузки приводит к ожидаемому всплывающему окну (веб-сайт), который хотел бы установить (имя приложения) ". Нажатие" установить "в этом диалоговом окне сначала заставляет приложение застревать" Ожидание..."

App stuck waiting

Пока это окончательно не укажет: "Не удалось загрузить приложение (имя приложения) в настоящее время невозможно загрузить".

Unable to Download App

Установка работы, как ожидается, с помощью iOS 7.

Запуск приложения из Xcode под iOS 8 работает.

Как мы поддерживаем Enterprise Distribution iOS 8?

Возможно, необходимо внести изменения в файл манифеста? Когда я попытался создать приложение в Xcode 6 Beta 7, процесс Enterprise Archival не предложил мне создать файл манифеста...

4b9b3361

Ответ 1

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

Sep  9 12:16:56 iPhone misagent[94] <Error>: attempt to install invalid profile: 0xe8008011
Sep  9 12:16:56 iPhone installd[40] <Error>: 0x100484000 -[MIInstallableBundle _installEmbeddedProfileInBundle:]: Could not install embedded profile: 0xe8008011 (Expired)

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

Хит EditGenerateDownload Перестройте приложение с новым профилем.

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

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

ИЗМЕНИТЬ

С iOS8 GM - я просто получаю Waiting... - я буду информировать вас о результатах отчета об ошибках.

ИЗМЕНИТЬ

После устранения неполадок найдено несколько исправлений:

Исправить 1

Как и в iOS8, если изображения, на которые вы ссылаетесь в манифестном plist, не существует - Apple не будет устанавливать приложение на телефоне - манифест является файлом, на который вы ссылаетесь на странице загрузки: itms-services://?action=download-manifest&url={url}

Убедитесь, что существуют как full-size-image, так и display-image:

<dict>
    <key>kind</key>
    <string>full-size-image</string>
    <key>needs-shine</key>
    <true/>
    <key>url</key>
    <string>https://{path_to_real_image}</string>
</dict>
<dict>
    <key>kind</key>
    <string>display-image</string>
    <key>needs-shine</key>
    <true/>
    <key>url</key>
    <string>https://{path_to_real_image}</string>
</dict>

Исправить 2

Корпоративные приложения не будут устанавливаться, если они существовали ранее на iOS7 из-за ошибки с iOS8. На консоли появится сообщение об ошибке:

Ignore manifest download, already have bundleID: {bundle_id}

Это можно устранить, временно изменив bundleID в файле манифеста, но Apple знает, как они отметили отчет об ошибке как дублированный. После внутренних тестов вы также устраните проблему, поместив макет домашнего экрана General -> Reset -> Reset Home Screen Layout

Исправить 3

Если вы видите, что приложение входит в стадию installing..., а не в loading..., почти наверняка проблема в embedded provisioning profile истек, чтобы исправить загрузку, вам нужно будет переархивировать приложение с помощью нового, обновленный профиль подготовки.

Исправить 4

Если вы видите, что приложение переходит на этап installing..., и ваш provisioning profile действителен - загрузите приложение, прикрепленное к консоли. (Xcode 6 > Окно > Устройствa > Нижняя левая кнопка [v]), вы, вероятно, обнаружите, что сбой установки с Verification Stage Failed чуть ниже будет сообщением об ошибке. В моем случае (Entitlements found that are not permitted by provisioning profile) - Для этой ошибки goto developer.apple.com и обновите свой Идентификатор приложения, чтобы включить правильный сервис. Для меня App Groups необходимо было включить. Затем восстановите provisioning profile

Ответ 2

У меня такая же проблема сегодня: я не смог установить одно из моих корпоративных приложений на IOs8 (но на IOs7). После многих часов поиска я наконец прочитал это сообщение на консоли устройства:

<Warning>: LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: com.ecaste.Crew-Desk

После долгого времени поиска я, наконец, прочитал этот пост: http://support.hockeyapp.net/discussions/problems/26683-not-able-to-download-apps-ios8-beta-5-autoupdate-manually-etc

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

Наконец, кажется, что проблема с кэшем в IOS8, которая считает, что приложение уже установлено (и это было не так, я удалил его ранее).

Надеемся на эту помощь

Ответ 3

Такая же ошибка здесь, я попытался изменить идентификатор пакета, пакет-версию, plist... но ошибка остается.

Я знаю, что это немного сложно, но это единственное, что работает для меня:

http://support.hockeyapp.net/discussions/problems/30194-ios8-workaround-can-break-today-extension?full_site=1#comment_35141099

  • Подключите устройство к Mac или ПК.
  • Создайте резервную копию в iTunes

  • Установите iExplorer: http://www.macroplant.com/iexplorer/

  • Запустите iExplorer, затем выберите демонстрационный режим

  • В левой боковой панели выберите "Медиа", затем откройте папку "Загрузки", и удалить все файлы в нем

  • Перезагрузите устройство

  • Откройте страницу загрузки и установите последнюю версию своего приложения.

Действительно, я опускаю первые два шага, и он отлично работает:)

Я надеюсь, что это поможет

Ответ 4

Установите цель развертывания ниже в

Проект > Настройка сборки > Цель развертывания iOS

Цели > Настройка сборки > Цель развертывания iOS

Ответ 5

У меня просто была эта проблема прямо сейчас, и она была вызвана mainfest plist (ключи: полноразмерное изображение + изображение-изображение), указывающие на местоположения изображения URL-адреса, которых не существует.

Похоже, что iOS6/iOS7 могут обрабатывать, если изображения не существуют, но iOS8 более ограничивает это.

Ответ 6

Основываясь на предыдущих комментариях к сообщению "ignore manifest download", мы попытались изменить идентификатор пакета (то есть com.companyName.AppName) в .plist, чтобы иметь уникальное имя, чтобы заставить iOS 8 загружать/устанавливать его в любом случае, После того, как он будет установлен, он правильно заменит существующую копию.

Я считаю, что здесь есть две проблемы. Если .plist на веб-сайте https, указывающий на сертификат предприятия, подписанный .ipa файл, имеет идентификатор пакета, соответствующий уже установленному приложению, он не будет перезаписывать его. Пакет-версия отличается от всех наших .plist файлов, поэтому она должна установить ее в любом случае. У iOS 7, похоже, нет этой проблемы. Мы планируем обойти эту проблему, испортив идентификатор пакета в plist, чтобы он всегда был уникальным для сборки.

Вторая проблема заключается в том, что при успешной установке приложения он не переключается на главный экран или не указывает на то, что он вообще что-то делает. В iOS 7 после выбора кнопки "Установить" в приглашении переключится на главный экран, где значок будет темным, а индикатор прогресса покажет ход загрузки. Тогда у приложения будет синяя точка рядом с ней, указав, что она новая. С iOS 8 он не переключается на главный экран, поэтому кажется, что он не работает. Вы можете вручную перейти на главный экран, и вы увидите темный значок с индикатором прогресса (теперь в новом месте, потому что он не знает, что он заменит существующее приложение). После успешной загрузки/установки он не помещает синюю точку в замещенное приложение.

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

Ответ 7

Это вызвало у меня огромную боль. Мне нужно было установить новое приложение OTA только на телефоны сотрудников за пределами решения MDM. Мне казалось, что я пытаюсь найти все возможные решения, которые я могу найти в Интернете, и ничего не получилось. Самое близкое, что я мог получить, - это приложение, чтобы перейти на "этап загрузки". Мое решение заняло неделю работы, пробую разные вещи. Я не уверен, что сработал в каком порядке и который бы сработал, но вот что я сделал:

В моем случае я ранее создавал это приложение с профилем подготовки от разработчика (в отличие от Enterprise). В Xcode я изменил идентификатор Bundle, чтобы присвоить ему новое имя, например, оно было первоначально com.mydomain.myapp и стало com.mydomain.mysuperapp.

Убедитесь, что подпись в приложении действительна и включает сертификат распространения для учетной записи Enterprise

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

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

Архивировано и экспортировано для развертывания Enterprise

Манифест должен содержать 57x57 png и 512x512 png-изображение, иначе установка не пройдет мимо стадии ожидания

Я создал файл index.html, который выглядел так:

<html>
    <body>
        <a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/dw80wahlwupkyd5/MyApp.plist">
            Install Learning Chunks App from Dropbox</a>
    </body>
</html>

Я использовал образец plist, который я нашел онлайн, и он включил некоторые дополнительные настройки. Когда я оставил их, загрузка не работала. Я вытащил их. Мой манифестный файл plist был назван: MyApp.plist и выглядел так:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>items</key>
        <array>
            <dict>
                <key>assets</key>
                <array>
                    <dict>
                        <key>kind</key>
                        <string>software-package</string>
                        <key>url</key>
                        <string>https://dl.dropboxusercontent.com/s/r1bljbkcows7sje/mysuperapp.ipa</string>
                    </dict>
                    <dict>
                        <key>kind</key>
                        <string>display-image</string>
                        <key>needs-shine</key>
                        <true/>
                        <key>url</key>
              <string> https://dl.dropboxusercontent.com/s/ujk9ipcv2naltut/logo57.png</string>
                    </dict>
                    <dict>
                        <key>kind</key>
                        <string>full-size-image</string>
                        <key>needs-shine</key>
                        <true/>
                        <key>url</key>
                  <string>https://dl.dropboxusercontent.com/s/gpebomok83mp9d5/logo512.png</string>
                    </dict>
            </array>
            <key>metadata</key>
                <dict>
                    <key>bundle-identifier</key>
                    <string>com.mydomain.mysuperapp</string>
                    <key>bundle-version</key>
                    <string>1.0</string>
                    <key>kind</key>
                    <string>software</string>
                    <key>title</key>
                    <string>My Super App</string>
                    <key>subtitle</key>
                    <string>My Super App</string>
                </dict>
        </dict>
        </array>
    </dict>
</plist>

Я загрузил MyApp.plist, index.html, logo57.png, logo512.png и MyApp.ipa в DropBox. Я поделился index.html с теми, кому нужно загрузить приложение.

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

Ответ 8

РЕДАКТОР: Проблема ниже - красная селедка. Как упоминалось выше, Dylan Hand, проблема для меня заключалась в том, что у меня были сломанные ссылки на изображения в файле манифеста. По-видимому, это не имело значения для ios7, но ios8 не завершит установку, если это правда. Когда я удалил эту ссылку, она отлично работала.


У меня есть тот же набор симптомов, что и OP (т.е. сообщение "Невозможно загрузить приложение", но только на iOS 8). Когда я пытаюсь проверить (например, Organizer → Validate), я получаю следующее сообщение.

Screenshot of the result of validation

Это привело меня к следующему сообщению: fooobar.com/questions/53366/...

Утверждается, что повторное создание профилей подготовки должно привести к появлению нового права, называемого beta-reports-active. Когда я пытаюсь сделать это на моей учетной записи предприятия, новые профили НЕ имеют нового права. Однако, когда я регенерирую профили подготовки в другой учетной записи, отличной от предприятия, новые профили имеют это поле.

Ответ 9

Если вы создаете приложения iOS с помощью сборки script, и вы ранее использовали PackageApplication с флагом -sign, это может вызвать проблемы. Флаг -sign больше не работает при построении 10.10, и его удаление заработало все наши приложения для iOS.

см. https://devforums.apple.com/thread/251624?tstart=0

Ответ 10

Этот вопрос сводил меня с ума, Только это помогло для Enterprise Distribution: Выполните все необходимые настройки сборки и нажмите "Архив". Выполните процесс распространения предприятия. Появится окно Организатора. На компьютере Mac найдите файл .xcacrchive, выбрав KRelease и выбрав "Show in finder".

Пользователь перемещается в папку, в которой находится файл .xcarchive. Щелкните правой кнопкой мыши файл .xcarchive и выберите "Показать содержимое пакета".

В открывшемся окне поиска найдите Продукты/Приложения Выберите и скопируйте файл .app

Создайте новую папку где-нибудь на вашем диске с именем "Полезная нагрузка". Примечание. Имя папки чувствительно к регистру. Вставьте скопированный файл .app в папку "Полезная нагрузка". Сжатие папки Payload, чтобы получить файл Payload.zip Переименуйте файл Payload.zip в .ipa и свяжите его с вашим .plist Готово!!! файл .ipa готов к установке на устройствах, зарегистрированных в профиле подготовки, используемом в генерации .xcarchive.

Ответ 11

Я рассмотрел эту проблему.

  • Поскольку Apple изменила профили настройки, пожалуйста, обновите профили подготовки (файл 1) и скопируйте их в "Полезная нагрузка /".
  • Убедитесь, что в разделе "Полезная нагрузка /" указан файл Entitlements.plist(Файл 2), и этот файл plist ДОЛЖЕН быть ТЕЛЕФОНОМ PLAIN, который создается текстовым редактором.
  • Убедитесь, что в "Полезной нагрузке /" создан Info.plist(файл 3), и это создается XCode;
  • Скопируйте файл Entitlements.plist(файл 4) в любом месте, кроме "Payload/".
  • Убедитесь, что идентификатор Bundle в файле 1-4 должен быть тем же.
  • Используйте этот файл Entitlements.plist(файл 4) для повторного входа в файл IPA.

Вы можете оставить его таким образом

codesign -fs "iPhone Distribution: Your Company Name" --entitlements=/Users/SenTR/Downloads/codesign/Entitlements.plist /Users/SenTR/Downloads/codesign/Payload/Your_Project_name.app

Пример с правами доступа.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>application-identifier</key>
        <string>PREFIX.yourappBundleID</string>
        <key>aps-environment</key>
        <string>production</string>
        <key>get-task-allow</key>
        <false/>
        <key>keychain-access-groups</key>
        <array>
            <string>PREFIX.yourappBundleID</string>
        </array>
    </dict>
</plist>

Если вы знаете китайский язык, это будет полезно.

http://hennry.com/2015/03/fail-to-resign-ipa-since-ios8/

Ответ 12

Эти ответы действительны, чтобы проверить, но если кто-то попробовал их, как я, и у STILL были проблемы, убедитесь, что ваше приложение содержит правильный параметр plist, который позволяет экспортировать архив будет сжат правильно. Этот - это то, что нас укусило, даже после выполнения всех вышеперечисленных шагов. Также следует отметить, что ответ, который говорит о том, что обеспечение plash веб-сайта содержит правильные ссылки на изображение, похоже, не влияет на что-либо, по крайней мере, для нас, используя XCode 6.3 для экспорта архивов. Он работал/не работал независимо от правильности ссылок. Очевидно, хорошая идея иметь эту информацию правильно. Еще одно интересное замечание: если мы экспортировали с использованием XCode 5, ipa были ВСЕГДА в правильном формате (см. Статью, связанную с SO выше); кажется, теперь XCode 6+ придирчив.

Ответ 13

Моя проблема была исправлена, удалив все встроенные outut, а затем полностью восстановив.

Ответ 14

Еще одним возможным источником этой проблемы установки является несоответствие случая между проектом и профилем подготовки (особенно, вероятно, с автоматическими или другими строками командной строки). Идентификаторы связки чувствительны к регистру. Например, если идентификатор пакета приложения в профиле подготовки com.example.MyApp, а в конфигурации проекта и/или Info.plist используется com.example.MyApp, Xcode 7.1 завершится с ошибкой подписи кода или возвратится к профилю общего профиля (один с * bundle id, что само по себе может быть проблемой), но команда xcodebuild будет успешной. Дженкинс также загрузит ошибочно подписанную сборку в Hockeyapp, например. Сборка будет загружаться на клиентские устройства, но не будет установлена ​​из-за несоответствия случая.

Таким образом,

Исправить 0

Убедитесь, что идентификатор пакета приложений настроен одинаково как в проекте, так и на портале разработчиков Apple.

Самый простой способ избежать этой конкретной проблемы - всегда использовать символы нижнего регистра в ваших идентификаторах пакетов. Копирование идентификатора пакета с портала разработчика Apple и вставка его в настройки сборки проекта (PRODUCT_BUNDLE_IDENTIFIER) также, конечно, также помогает.

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

Исправить 0'

Обязательно ознакомьтесь с технической записью Apple, названной Устранение неполадок при сбое установки для iOS.

Ответ 15

Моя проблема заключалась в том, что у меня было место как в имени файла ipa, так и в ссылке на этот ipa в моем plist. Удаление пространства в обоих разрешало установку