Розповсюдження оновлення додатків для підприємств на iOS 8


111

У мене є корпоративна програма, яку я розповсюджую за itmsURL-адресою:

itms-services://?action=download-manifest&url=itms-services://?action=download-manifest&url=https://$MY_PLIST_URL.plist

На iOS 7 відмінно працюють і завантаження, і оновлення. Однак на iOS 8 я отримую помилку:

LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: com.mycom.MyApp

У моєму плісті є

<key>bundle-identifier</key>
<string>com.mycom.MyApp</string>
<key>bundle-version</key>
<string>0.2.2</string>

і в моєму додатку на iOS 8 я працюю версією 0.2.1


1
Яку версію iOS8 ви використовуєте. Я чув про подібні проблеми з Beta 5.
Anil Natha

7
Точна проблема. iOS 8 GM. Ці програми просто відмовляються завантажувати зараз.
Carl Sjogreen

3
Я запускаю тепер офіційний випуск ios8.0, і установка не запуститься. Я подивився на консуль, і там з'явилося повідомлення: "<Увага>: LoadExternalDownloadManifestOperation: Ігноруйте завантаження маніфесту, вже є bundleID: MYBUNDLENAME" ... відновлення пристрою або зміна ідентифікатора пакета зробить фокус
user2387149


1
@pcperini Я думаю, що відповіді в іншому пості мають більше інформації. Жодного правопорушення не передбачалося.
Крістофер Джонсон

Відповіді:


91

Я також стикався з цією проблемою при нашому розповсюдженні додатків. Нам вдалося виправити цю проблему, підробивши ідентифікатор пакета всередині .plist, використовуючи для розповсюдження завантаження, зберігаючи ідентифікатор пакета ipa таким же.

Наприклад, у вашому списку:

<key>bundle-identifier</key>
<string>com.mycom.MyApp</string>
<key>bundle-version</key>
<string>0.2.2</string>

змінити com.mycom.MyApp на com.mycom.MyApp.ios8fix

Додаток буде встановлено за допомогою нового значка додатка, який зникне після встановлення.

Якщо у вас вже встановлено додаток, ви навіть побачите новий значок додатка під час встановлення. Після встановлення цей значок зникає, але вже наявна версія програми буде оновлена. З чистою установкою значок установки зникне, а значок встановленого додатка з’явиться на місці.

Схоже, iOS 8 кешує ідентифікатори пакету та порівнює запитувані установки з цими кешованими. У більшості випадків ви бачите лише спливаюче вікно з проханням встановити, але нічого не відбувається.

Як вже помітив Шон, це з'являється з xCode 6 GM та офіційною версією iOS 8. Пристрої, які ніколи раніше не встановлювали вашу програму, не матимуть проблем із встановленням програми.


3
Він працює на деяких пристроях, але деякі інші розробляють syslog, який все ще показує попередній ідентифікатор пакета, навіть я змінив файл плісту.
храм

На насправді надання зображень є правильним рішенням - перевірити цю відповідь stackoverflow.com/a/26283611/276656
mspasov

3
У моєму випадку зміна ідентифікатора зв’язку працювало на деяких пристроях - не на всіх. Змінивши шлях до плістера, сам вирішив його для мене.
pawi

1
Де редагувати .plist для редагування, якщо ви завантажуєте додаток із сервера Xcode?
Колін

1
Ця відповідь stackoverflow.com/a/28727958/108040 працювала краще для нас, оскільки вам не потрібно змінювати .plist
Робін,

24

Для мене це працювало краще, не потрібно торкатися ваших маніфестів чи інших хитрощів (ідеально підходить для сервера Xcode, де plistавтоматично генерується):

  1. Завантажте iExplorer ( http://www.macroplant.com/iexplorer/ )
  2. Підключіть пристрій
  3. Видаліть усі файли в "Медіа> Завантаження"
  4. Перезавантажте пристрій

Це скидає кеші пристроїв, тепер ви можете встановити додаток як завжди.


3
Спасибі, ви рятувальник життя. Я використовую iBrowse ( ibrowseapp.com ), який не підтримується Macroplant
Min Soe

2
Для нас це спрацювало чудово ... не забудьте перезапустити пристрій після видалення вмісту медіа -> Завантаження
Робін

спасибі Робота! Але все ще думаючи, що це потрібно робити на телефоні кожного користувача!
Ammar Mujeeb

Чи працює "Видалити весь вміст і налаштування" (у додатку Налаштування)?
onmyway133

Який вміст папки "Завантаження"?
HamzaGhazouani

16

У мене така ж проблема. Я відтворив це:

1) Встановлення моєї програми під час оновлення з iOS 7 до iOS 8 GM

2) Видалення його в iOS 8

3) Спроба встановити його через itms-сервіси: з тим же найменуванням пакета

Коли я спробував змінити ідентифікатор зв’язку в списку серверів (не в додатках Info.plist), він спрацював (додаток було завантажено, не залишилося піктограми "тіні"). Але це схоже на яблучну помилку.


1
Але ви також повинні змінити ім'я пакета в додатку, чи не так? Я спробував змінити лише список серверів, і результат: 18 вересня 09:59:20 XXX-iPhone filecoordinationd [123] <Попередження>: пісочниці відмовлено в підписці, щоб перейти на категорію com.mo2o.XXX (ідентифікатор пакета com.apple.iaptransportd , 037BE63A-8737-4A4B-9C9D-B8FAF8DC0D40) 18 вересня 09:59:20 XXX-iPhone filecoordinationd [123] <Попередження>: пісочниці відмовлено в підписці на просування до категорії com.mo2o.XXX (ідентифікатор пакета (null), 0B9D3B2A- 2B5D-4882-8771-61784326E507) і додаток не встановлюється
Eva Madrazo

ммм. Я не прав, він записує попередження, але також встановлює додаток.
Eva Madrazo

Це добре працює, проте є незначний недолік. Під час встановлення пристрій не знає, яку програму ви оновлюєте, тому під час встановлення ви побачите другу піктограму програми. Після установки це автоматично виправляється.
Іво Янш

4
Варто зауважити, що в цій статті buldozer.io сказано, "схоже, на пристрої, на яких встановлений сертифікат розробника, це не впливає". Незрозуміло, що розуміється під "сертифікатом розробника" (я думаю, профіль забезпечення розробки, який "охоплює" відповідну програму), але це може пояснити проблеми з відтворенням проблеми на різних пристроях.
астлетрон

11

Прийняте рішення більше не працює на iOS9.

Я розумію, що Apple закрила серйозну дірку в безпеці для iOS, не даючи бінарним файлам adhoc замінити фондові додатки або програми, завантажені з App Store. Дивіться цю статтю для довідкової інформації (CVE-2015-3722 / 3725 та CVE-2015-3725):

https://www.fireeye.com/blog/threat-research/2015/06/three_new_masqueatt.html

Зважаючи на наслідки для безпеки, я не очікував, що така поведінка зміниться у майбутніх версіях IOS. Здається, альтернативні варіанти:

  • видаліть версію App Store перед встановленням adhoc
  • розповсюдьте adhoc як "новий" додаток, змінивши ідентифікатор пакета як у додатку, так і у списку розповсюдження
  • використовувати TestFlight

Схоже, ти маєш рацію. Він чудово працює при свіжих встановленнях або оновленні попередньої версії програми adhoc, але це не працює, коли встановлена ​​версія була встановлена ​​з App Store.
charles

Ось ще одна підказка, чому Apple внесла зміни: loopinsight.com/2015/10/05/…
Frans

Хоча я розумію необхідність закрити безпеку, це ставить нас у цікавий сценарій, коли ми не можемо перевірити оновлення однієї версії до іншої на розгорнутій версії, не переходячи до TestFlight. Здається, що додаток, підписаний спеціальним профілем та сертифікатом для того самого розробника, має бути в змозі оновити.
lidsinker

@charles , "Це чудово працює при свіжих встановленнях або оновленні попередньої версії програми adhoc", ви протестували це? тому що ми стикаємося з цією проблемою оновлення adhoc adhoc в IOS9 .....
flypig

@flypig Я спробував це на iOS 9 у той час, і він спрацював. З того часу не пробував, вибачте.
Чарльз

9

Те, що сказав Гіл, здається, правильне, але конкретніше, я виявив, що мені також потрібно збільшити рядок версії для версії в сервері.plist:

    <key>bundle-version</key>
    <string>3.2.2</string>

Це принаймні дозволяє здійснити встановлення OTA.

(Вибачте ... Додав би до коментарів, але я занадто великий n00b.)


9

Подивіться на цю відповідь і на цю відповідь .

Ви можете вирішити цю проблему без жодних злому, для iOS8 ви повинні включити в assetsключ .plistфайлу маніфесту і display-imageіfull-size-image клавіші . Вони були доступні в Xcode 5 під час збереження архіву для підприємства та додаткового розгортання, але не були необхідними.

Я створив суть на github із шаблоном для файлу install-manifeet.plist .


7
Я насправді відчував цю проблему з включеними обома цими ключами.
Шон Данзайзер

Я змінив ідентифікатор пакета, і він працював. Не в захваті від цього.
Шон Данзайзер

Чудово! Я також перемістив все до підпапки і відрегулював лише MD5 з ipa-файлу.
Феліпе FMMobile

3

Ця помилка вперше знайдена в iOS8 Beta5. І це ще не було зафіксовано Apple в GM насінні та офіційній версії iOS8.0. Більше дискусій можна знайти тут

Поточний спосіб, який я перевіряю сам:

  • Якщо вміст у вашому пристрої не хвилює: виконайте чисте відновлення в режимі DFU на пристрої
  • Якщо ти хочеш повернути свої речі
    1. Створіть резервну копію пристрою iOS в iTunes перед відновленням (без спеціального / корпоративного додатка)
    2. Після чистого відновлення пристрою встановіть спеціальний додаток / підприємство
    3. Відновіть резервну копію з iTunes
    4. Тепер ви можете видалити ці спеціальні програми / програми та перевстановити їх.

1
Досі не визначено в 8.1 також
Кевін

2
Все ще не визначено 8.2 ....... Можливо, ми лише 15 людей у ​​світі робимо корпоративні додатки.
Карл Хайнц Бреме Арредондо

3

Проблема вирішується шляхом зміни ідентифікатора пакета в списку.

Зазвичай після натискання на itms посилання відображатиметься робочий стіл, на якому показана установка значків. Однак для мого пристрою iOS 8.0 після натискання на посилання itms він не зміниться на сторінку інсталяції, але установка вже працює позаду.


2

Це надзвичайно, але якщо ви не можете змінити свій ідентифікатор пакету, який я не зміг, відновлення вашого iPhone через iTunes до останньої iOS 8 та відновлення з резервної копії усуває проблему.


Ви не повинні відновити iPhone - всього кілька кроків updraft.beekeeper.io/post/2046721
Сергій

1

Така ж проблема існує в iOS 10 beta 1.

31 грудня 19:01:32 iphone-6s itunesstored [98]: LoadExternalDownloadManifestOperation: Ігнорувати завантаження маніфесту, вже є bundleID: com. ***************. Ios з фазою: SSDownloadPhaseWaiting

Одне, чого я тут не розумію, - це те, що дата - 31 грудня в журналі пристроїв XCode, однак у пристрої встановлені правильні дата та час.

Оновлення: Хлопці з HockeyApp сповістили Apple про цю проблему під час WWDC, і виправлення має з’явитися у наступному насінні.



0

Якщо ви створюєте додатки для iOS за допомогою сценарію збірки, і раніше ви використовували PackageApplication з прапором --sign, то це може спричинити проблеми. Прапор --sign більше не працює при будівництві 10.10, а його видалення знову встановить усі наші програми iOS.

дивіться: https://devforums.apple.com/thread/251624?tstart=0


Це вирішення іншого питання і пов'язане зі створенням, а не встановленням, як просить ОП.
вот

Я не погоджуюсь. У b5 була введена зміна поведінки, яка спричиняє завантаження підписаних IPA. Якщо припустити, що ОП не має помилок у файлі їхніх маніфестів, тоді підписаний IPA практично гарантовано не зможе встановити саме ту помилку, яку вони надали. Оскільки вони не згадують, як вони створили свій IPA, я не можу точно сказати, чому він не працює. З іншого боку, видалення сигналів із наших IPA дозволило їм знову встановитись.
Джеймс Мур

Це може бути правдою, але якщо ви шукаєте помилку, вказану в початковому запитанні: "Ігнорувати завантаження маніфесту, вже є bundleID:", це, очевидно, пов'язано з широко обговорюваною помилкою iOS8 в корпоративних додатках та неможливістю встановити додаток що було встановлено до оновлення до iOS8, потім видалення після оновлення до iOS8. Ви можете вирішити проблему, але це не проблема, яку має ОП.
вот

0

Переконайтеся, що у вас є повний доступ до Інтернету.

Я зіткнувся з тією ж проблемою із встановленням OTA та IOS8. Оскільки я відстаю від корпоративного проксі, рішення вище не працювали, поки я не встановив ручні настройки проксі (не потрібні в IOS7) для вирішення цієї проблеми.


0

Я щойно стикався з цією проблемою на пристрої під керуванням 8.1, оновлення пристрою до 8.3 вирішило проблему. Отже, або помилка більше не присутня в 8.3 .... або акт оновлення очистив кешовані дані все одно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.