2014-09-10 2 views
109

У меня есть приложение предприятия, что я распределяя через itms URL:Enterprise App Update Распределение по прошивкой 8

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

КСН 7, обе загрузки и обновления прекрасно работают. КСНО 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> 

и на моем приложении на прошивке 8, я бег версии 0.2.1

+1

Какая версия iOS8 вы используете. Я слышал о людях, имеющих такие проблемы, как с Beta 5. –

+2

@SlyRaskal iOS 8 GM –

+7

Точная же проблема. iOS 8 GM. Эти приложения просто не хотят скачивать сейчас. –

ответ

90

Я также столкнулся с этой проблемой с нашим распределением приложений. Мы смогли исправить эту проблему, «подделав» идентификатор пакета внутри .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. Устройства, которые никогда не устанавливали ваше приложение, не будут иметь никаких проблем для установки приложения.

+3

Он работает на некоторых устройствах, но в некоторых других случаях syslog все еще показывает предыдущий идентификатор пакета, даже я изменил файл plist. – temple

+0

Фактически предоставление изображений - правильное решение - проверьте этот ответ http://stackoverflow.com/a/26283611/276656 – mspasov

+3

В моем случае изменение идентификатора связки работало на некоторых устройствах - не все. После изменения пути к самому plist решил это для меня. – pawi

16

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

1) Установив мое приложение при обновлении с прошивки 7 до прошивки 8 GM

2) Удаления его прошивка 8

3) Попытки установить его с помощью ITMS-услуг : с тем же именем пучка

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

+1

Но вы также должны изменить имя пакета в приложении, не так ли? Я попытался только изменить серверный plist, и результатом будет: сентябрь 18 09:59:20 XXX-iPhone filecoordinationd [123] : песочница отказала подписке на прогресс в категории com.mo2o.XXX (bundle id 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) и приложение не устанавливает –

+0

mmm Я не прав, он регистрирует предупреждение, но также устанавливает приложение. –

+0

Это прекрасно работает, однако есть небольшой недостаток. Во время установки устройство не знает, какое приложение вы обновляете, поэтому во время установки вы увидите второй значок приложения. После установки это автоматически исправляется. –

3

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

В настоящее время обходной путь испытывается по себе:

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

Все еще не исправлено в 8.1 – Kevin

+2

Все еще не исправлено в 8.2 ....... Возможно, только 15 человек в мире делают корпоративные приложения. –

9

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

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

Это, по крайней мере, позволяет достичь Установка OTA.

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

9

Посмотрите над this answer и this answer.

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

Я создал сущность на github с шаблоном для файла install-manifet.plist.

+7

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

+0

Удалось ли вам найти исправление в конце? – alexcristea

+0

Я изменил идентификатор связки, и он сработал. Не в восторге от этого. –

2

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

+0

Вы не должны восстанавливать iPhone - всего несколько шагов https://updraft.beekeeper.io/post/2046721 –

0

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

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

+0

Это решение другой проблемы и связано с построением, а не с установкой, как спрашивает OP. – wottle

+0

Я не согласен. В b5 было внесено изменение поведения, которое заставляет подписанные IPAs не загружаться. Предполагая, что OP не имеет ошибок в их файле манифеста, тогда подписанный IPA практически гарантированно не сможет установить с точно указанной ошибкой. Поскольку они не упоминают, как они построили свой IPA, я не могу точно сказать, почему он терпит неудачу. С другой стороны, удаление sigs из наших IPAs заставил их все устанавливать снова. –

+0

Это может быть правдой, но если вы посмотрите на ошибку, указанную в исходном вопросе: «Игнорируйте загрузку манифеста, уже имеете bundleID:», это, очевидно, связано с широко обсуждаемой в настоящее время ошибкой iOS8 на корпоративных приложениях и невозможностью установить приложение, которое было установлено до обновления до iOS8, а затем удаление после обновления до iOS8. Вы можете решить проблему, но это не проблема, которую имеет OP. – wottle

3

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

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

0

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

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

24

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

  1. Скачать IEXPLORER (http://www.macroplant.com/iexplorer/)
  2. Подключите устройство
  3. Удалить все файлы в «медиа> Загрузки»
  4. Перезапуск устройства

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

+3

Спасибо, ты спасатель жизни. Я использую iBrowse (http: //www.ibrowseapp.com), который свободен от Macroplant –

+2

Работал для меня, спасибо большое :) – MartinMoizard

+2

Это отлично поработало для нас ... не забудьте перезагрузить устройство после удаления содержимого медиа -> Загрузки – Robin

0

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

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 как «новые» приложения, изменив расслоение идентификатор в обоих приложение и PLIST распределения
  • использования TestFlight
+0

Похоже, вы правы. Он отлично работает при новых установках или обновляет предыдущую adhoc-версию приложения, но не работает, когда установленная версия была установлена ​​из App Store. – charles

+0

Вот еще один намек на то, почему Apple внесла изменения: http://www.loopinsight.com/2015/10/05/apples-official-statement-on-the-yispecter-ios-malware/ – Frans

+0

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

1

такая же проблема существует на прошивке 10 беты 1.

Dec 31 19:01:32 iphone-6s itunesstored[98] : LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: com.***************.ios with phase: SSDownloadPhaseWaiting

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

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

+1

та же проблема на iOS 10 – crossle

Смежные вопросы