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

Распространение обновлений корпоративного приложения на iOS 8

У меня есть корпоративное приложение, которое я распространяю через itms URL:

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

В моем plist я

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

и в моем приложении на iOS 8 я запускаю версию 0.2.1

4b9b3361

Ответ 1

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

Например, в вашем plist:

<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 кэширует идентификаторы пакетов и сравнивает запрошенные установки с этими кешированными. В большинстве случаев вы увидите только всплывающее окно с запросом на установку, но ничего не происходит.

Как уже заметил Sean, это появляется с xCode 6 GM и официальной версией iOS 8. Устройства, которые никогда не устанавливали ваше приложение, не будут иметь проблем с установкой приложения.

Ответ 2

Это работало лучше для меня, не нужно касаться вашего манифеста или другого обмана (идеально подходит для Xcode Server, где plist автоматически сгенерирован):

  • Загрузите iExplorer (http://www.macroplant.com/iexplorer/)
  • Подключите устройство
  • Удалить все файлы в разделе "Медиa > Загрузка"
  • Перезапустить устройство

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

Ответ 3

У меня такая же проблема. Я воспроизвел его:

1) Наличие моего приложения при обновлении с iOS 7 до iOS 8 GM

2) Удаление его в iOS 8

3) Попытка установить его через itms-services: с тем же именем пакета

Когда я попытался изменить идентификатор пакета в серверном plist (не в приложениях Info.plist), он работал (приложение было загружено без значка "тени" ). Но это похоже на ошибку Apple.

Ответ 4

Принятое решение больше не работает на 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

Ответ 5

То, что сказал Гил, кажется правильным, но, более конкретно, я обнаружил, что мне также необходимо увеличить строку версии пакета в server.plist:

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

Это по крайней мере позволяет выполнить установку OTA.

(Извините... добавил бы к комментариям, но я слишком много n00b.)

Ответ 6

Посмотрите этот ответ и этот ответ.

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

Я создал gistub с шаблоном для файла install-manifestet.plist.

Ответ 7

Это ошибка, обнаруженная в iOS8 Beta5. И это все еще не было зафиксировано Apple в семенах GM и официальной версии iOS8.0. Больше обсуждений можно найти здесь

Текущее обходное решение проверяется мной:

  • Если вам не нравится содержимое вашего устройства: выполните чистое восстановление в режиме DFU устройства.
  • Если вы хотите вернуть свои вещи
    • Резервное копирование вашего устройства iOS в iTunes перед восстановлением (без приложения Ad-Hoc/enterprise)
    • После восстановления вашего устройства, установите приложение Ad-Hoc/enterprise
    • Восстановите резервную копию из iTunes
    • Теперь вы можете удалить эти Ad-Hoc/корпоративные приложения и переустановить их.

Ответ 8

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

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

Ответ 9

Это экстремально, но если вы не можете изменить свой идентификатор пакета, которого я не смог, восстановление iPhone через iTunes до последней версии iOS 8 и восстановление из резервной копии устраняет проблему.

Ответ 10

Такая же проблема существует и в iOS 10 beta 1.

Dec 31 19:01:32 iphone-6s itunesstored [98]: LoadExternalDownloadManifestOperation: Игнорировать манифестную загрузку, уже есть bundleID: com. ***************. ios с фазой: SSDownloadPhaseWaiting

Одна вещь, которую я не понимаю здесь, - это дата 31 декабря в журнале устройств XCode, однако устройство имеет правильную дату и время.

Update: Ребята из HockeyApp уведомили Apple об этой проблеме во время WWDC, и исправление должно появиться в следующем семестре.

Ответ 11

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

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

Ответ 12

Убедитесь, что у вас есть полный доступ в Интернет.

У меня возникла такая же проблема с установкой OTA и IOS8. Поскольку я за корпоративным прокси-сервером, приведенные выше решения не работали, пока я не установил параметры ручного прокси-сервера (не нужны в IOS7) для решения этой проблемы.

Ответ 13

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