Distribución de actualizaciones de aplicaciones empresariales en iOS 8

111

Tengo una aplicación empresarial que estoy distribuyendo a través de una itmsURL:

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

En iOS 7, tanto las descargas como las actualizaciones funcionan bien. En iOS 8, sin embargo, aparece el error:

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

En mi plist, tengo

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

y en mi aplicación en iOS 8, estoy ejecutando la versión 0.2.1

Patrick Perini
fuente
1
¿Qué versión de iOS8 estás ejecutando? He oído hablar de personas que tienen problemas como este con Beta 5.
Anil Natha
7
Exactamente el mismo problema. iOS 8 GM. Estas aplicaciones simplemente se niegan a descargarse ahora.
Carl Sjogreen
3
Estoy ejecutando el ios8.0 ahora oficial y la instalación no se inicia. Eché un vistazo a la consola y hay un mensaje que dice: "<Advertencia>: LoadExternalDownloadManifestOperation: Ignore la descarga del manifiesto, ya tengo bundleID: MYBUNDLENAME" ... restaurar el dispositivo o cambiar la identificación del paquete hará el truco
user2387149
posible duplicado de iOS 8 - No se puede instalar la aplicación empresarial
Kristopher Johnson
1
@pcperini Creo que las respuestas en la otra publicación tienen más información. Sin intención de ofender.
Kristopher Johnson

Respuestas:

91

También encontré este problema con la distribución de nuestra aplicación. Pudimos solucionar este problema "falsificando" el identificador de paquete dentro del .plist usando para la distribución de descargas, manteniendo nuestro identificador de paquete ipa igual.

Por ejemplo, en tu plist:

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

cambie com.mycom.MyApp a com.mycom.MyApp.ios8fix

La aplicación se instalará con un nuevo icono de aplicación, que desaparecerá después de la instalación.

Si ya ha instalado la aplicación, incluso verá un nuevo icono de aplicación durante la instalación. Después de la instalación, este icono desaparece, pero se actualizará su versión ya existente de la aplicación. Con una instalación limpia, el icono de instalación desaparecerá y el icono de la aplicación instalada aparecerá en su lugar.

Parece que iOS 8 está almacenando en caché los identificadores de paquete y compara las instalaciones solicitadas con estas en caché. La mayoría de las veces, solo verá una ventana emergente solicitando la instalación, pero no sucede nada.

Como Sean ya notó, esto aparece con xCode 6 GM y la versión oficial de iOS 8. Los dispositivos que nunca antes instalaron su aplicación no tendrán problemas para instalar la aplicación.

Antoine
fuente
3
Funciona en algunos dispositivos, pero en otros dispositivos el syslog sigue mostrando la identificación del paquete anterior, incluso cambié el archivo plist.
templo
En realidad, proporcionar imágenes es la solución correcta: consulte esta respuesta stackoverflow.com/a/26283611/276656
mspasov
3
En mi caso, cambiar el identificador de paquete funcionó en algunos dispositivos, no en todos. Después de cambiar la ruta al plist, lo resolvió por mí.
pawi
1
¿Dónde está el .plist para editar si está descargando la aplicación desde Xcode Server?
Collin
1
Esta respuesta stackoverflow.com/a/28727958/108040 funcionó mejor para nosotros ya que no tiene que cambiar el .plist
Robin
24

Esto funcionó mejor para mí, no es necesario tocar su manifiesto u otros trucos (perfecto para Xcode Server donde plistse genera automáticamente):

  1. Descarga iExplorer ( http://www.macroplant.com/iexplorer/ )
  2. Conecta tu dispositivo
  3. Elimina todos los archivos en "Medios> Descargas"
  4. Reiniciar el dipositivo

Esto restablece los cachés del dispositivo, ahora puede instalar su aplicación como de costumbre.

jlpiedrahita
fuente
3
Gracias, eres un salvavidas. Utilizo iBrowse ( ibrowseapp.com ) que está libre de Macroplant
Min Soe
2
Esto funcionó muy bien para nosotros ... no olvide reiniciar el dispositivo después de eliminar el contenido de Medios -> Descargas
Robin
gracias hizo el trabajo! ¡Pero sigo pensando que es necesario hacerlo en el teléfono de cada usuario!
Ammar Mujeeb
¿Funciona "Borrar todo el contenido y la configuración" (en la aplicación Configuración)?
onmyway133
¿Cuál es el contenido de la carpeta Descargas?
HamzaGhazouani
16

Estoy teniendo el mismo problema. Lo reproduje por:

1) Tener mi aplicación instalada mientras actualizo de iOS 7 a iOS 8 GM

2) Eliminándolo en iOS 8

3) Intentando instalarlo a través de itms-services: con el mismo nombre de paquete

Cuando intenté cambiar el identificador de paquete en el plist del servidor (no en las aplicaciones Info.plist), funcionó (la aplicación se descargó y no quedó ningún icono "sombra"). Pero parece un error de manzana.

Gil Hartman
fuente
1
Pero también tienes que cambiar el nombre del paquete en la aplicación, ¿no es así? He intentado cambiar solo el plist del servidor y el resultado es: 18 de septiembre 09:59:20 XXX-iPhone filecoordinationd [123] <Advertencia>: sandboxing denegó la suscripción para progresar en la categoría com.mo2o.XXX (ID de paquete com.apple.iaptransportd , 037BE63A-8737-4A4B-9C9D-B8FAF8DC0D40) 18 de septiembre 09:59:20 XXX-iPhone filecoordinationd [123] <Warning>: Sandboxing denegó la suscripción para progresar en la categoría com.mo2o.XXX (ID de paquete (nulo), 0B9D3B2A- 2B5D-4882-8771-61784326E507) y la aplicación no se instala
Eva Madrazo
mmm no tengo razón, registra la advertencia pero también instala la aplicación.
Eva Madrazo
Esto funciona bien, sin embargo, hay un pequeño inconveniente. Durante la instalación, el dispositivo no sabe qué aplicación está actualizando, por lo que verá un segundo icono de aplicación durante la instalación. Sin embargo, después de la instalación, esto se corrige automáticamente.
Ivo Jansch
4
Cabe destacar que en ese artículo de bulldozer.io dice "parece que los dispositivos que tienen instalado un certificado de desarrollador no se ven afectados". No está claro qué se entiende por 'certificado de desarrollador' (supongo que un perfil de aprovisionamiento de desarrollo que 'cubre' la aplicación en cuestión), pero esto podría explicar los problemas para reproducir el problema en diferentes dispositivos.
astletron
11

La solución aceptada ya no funciona en iOS9.

Tengo entendido que Apple ha cerrado un grave agujero de seguridad de iOS al evitar que los binarios ad hoc reemplacen las aplicaciones de stock o las aplicaciones descargadas de la App Store. Consulte este artículo para conocer los antecedentes (CVE-2015-3722 / 3725 y CVE-2015-3725):

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

Tomadas las implicaciones de seguridad, no esperaría que este comportamiento cambie en futuras versiones de IOS. Las opciones alternativas parecen ser:

  • eliminar la versión de la App Store antes de instalar el adhoc
  • distribuir el adhoc como una aplicación 'nueva' cambiando el ID del paquete tanto en la aplicación como en la lista de distribución
  • utilizar TestFlight
Frans
fuente
Parece que tienes razón. Funciona bien en instalaciones nuevas o actualizando una versión ad hoc anterior de la aplicación, pero no funciona cuando la versión instalada se instaló desde la App Store.
charles
Aquí hay otra pista de por qué Apple hizo el cambio: loopinsight.com/2015/10/05/…
Frans
Si bien entiendo la necesidad de cerrar la seguridad, esto nos coloca en un escenario interesante donde no podemos probar las actualizaciones de una versión a otra en la versión implementada sin ir a TestFlight. Parece que una aplicación firmada por un perfil y un certificado ad-hoc para el mismo desarrollador debería poder actualizarse.
lidsinker
@charles, "Funciona bien en instalaciones nuevas o actualizando una versión ad hoc anterior de la aplicación", ¿lo ha probado? porque encontramos este problema adhoc de actualización de adhock en IOS9 .....
flypig
@flypig Lo había probado en iOS 9 en ese momento y funcionó. No lo he intentado desde entonces, lo siento.
charles
9

Lo que dijo Gil parece ser correcto, pero más específicamente, descubrí que también necesitaba incrementar la cadena de la versión del paquete en server.plist:

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

Esto al menos le permite realizar una instalación OTA.

(Lo siento ... Hubiera agregado a los comentarios, pero soy demasiado n00b).

Cfold
fuente
9

Eche un vistazo a esta respuesta y esta respuesta .

Puede solucionar este problema sin ningún truco, para iOS8 debe incluir en la assetsclave del .plistarchivo de manifiesto las claves display-imagey full-size-image. Estaban disponibles en Xcode 5 al guardar un archivo para la implementación empresarial y add-hoc, pero no eran necesarios.

He creado una esencia en github con la plantilla para el archivo install-manifet.plist .

alexcristea
fuente
7
De hecho, estaba experimentando este problema con ambas claves incluidas.
Sean Danzeiser
ya cambié el identificador del paquete y funcionó. No estoy emocionado por eso.
Sean Danzeiser
¡Excelente! También moví todo a una subcarpeta y ajusto solo el MD5 del archivo ipa.
Felipe FMMobile
3

Este es un error que se encontró por primera vez en iOS8 Beta5. Y todavía no fue reparado por Apple en la semilla GM y la versión oficial de iOS8.0. Se pueden encontrar más discusiones aquí

La solución actual que estoy probando yo mismo:

  • Si no le importa el contenido de su dispositivo: realice una restauración limpia en el modo DFU del dispositivo
  • Si quieres tus cosas de vuelta
    1. Haga una copia de seguridad de su dispositivo iOS en iTunes antes de restaurar (sin la aplicación Ad-Hoc / empresarial)
    2. Después de restaurar su dispositivo limpiamente, instale su aplicación Ad-Hoc / empresarial
    3. Restaura tu copia de seguridad desde iTunes
    4. Ahora puede eliminar esas aplicaciones Ad-Hoc / empresariales y volver a instalarlas.
Xiao
fuente
1
Todavía no se corrigió en 8.1 tampoco
Kevin
2
Aún no se ha solucionado en 8.2 ....... Tal vez solo nosotros, 15 personas en el mundo, hacemos aplicaciones empresariales.
Karl Heinz Brehme Arredondo
3

Problema resuelto cambiando el identificador de paquete en plist.

Normalmente, después de tocar el enlace de itms, se mostrará el escritorio que muestra el icono de instalación. Sin embargo, para mi dispositivo iOS 8.0, después de tocar el enlace de itms, no cambiará a la página de instalación, pero la instalación ya está funcionando.

Tallent Siu
fuente
2

Esto es extremo, pero si no puede cambiar el identificador de su paquete, lo cual no pude, restaurar su iPhone a través de iTunes al último iOS 8 y restaurar desde una copia de seguridad soluciona el problema.

pho0
fuente
No debe restaurar el iPhone, solo unos pocos pasos updraft.beekeeper.io/post/2046721
Sergey Kopanev
1

El mismo problema existe en iOS 10 beta 1.

31 de diciembre 19:01:32 iphone-6s itunesstored [98]: LoadExternalDownloadManifestOperation: Ignore la descarga del manifiesto, ya tiene bundleID: com. ***************. Ios con fase: SSDownloadPhaseWaiting

Una cosa que no entiendo aquí es que la fecha es el 31 de diciembre en el registro del dispositivo XCode, sin embargo, el dispositivo tiene la fecha y hora correctas configuradas.

Actualización: los chicos de HockeyApp notificaron a Apple sobre este problema durante la WWDC y la solución debería venir en la próxima semilla.

Alex Sorokoletov
fuente
1
mismo problema en iOS 10
Crossle Song
0

Si crea sus aplicaciones de iOS con un script de compilación y anteriormente estaba usando PackageApplication con la marca --sign, entonces eso puede estar causando problemas. El indicador --sign ya no funciona cuando se basa en 10.10 y al eliminarlo, todas nuestras aplicaciones de iOS se instalan nuevamente.

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

James Moore
fuente
Eso está abordando un problema diferente y está relacionado con la construcción, y no la instalación, como pide el OP.
2014
Estoy en desacuerdo. Se introdujo un cambio de comportamiento en b5 que provoca que las IPA firmadas no se carguen. Suponiendo que el OP no tenga errores en su archivo de manifiesto, entonces se garantiza virtualmente que una IPA firmada no se instalará con exactamente el error que proporcionaron. Como no mencionan cómo construyeron su IPA, no puedo decir con seguridad por qué está fallando. Por otro lado, la eliminación de firmas de nuestras API hizo que todas se volvieran a instalar.
James Moore
Eso puede ser cierto, pero si observa el error especificado en la pregunta original: "Ignore la descarga del manifiesto, ya tiene bundleID:", obviamente está relacionado con el error iOS8 ahora ampliamente discutido en las aplicaciones empresariales y la imposibilidad de instalar una aplicación. que se instaló antes de actualizar a iOS8, luego desinstalar después de actualizar a iOS8. Puede que esté abordando un problema, pero no es el problema que tiene el OP.
2014
0

Asegúrese de tener acceso completo a Internet.

Estaba enfrentando el mismo problema con la instalación de OTA y IOS8. Debido a que estoy detrás de un proxy corporativo, las soluciones anteriores no funcionaron hasta que configuré la configuración manual del proxy (no es necesaria en IOS7) para resolver ese problema.

creal
fuente
0

Acabo de encontrar este problema en un dispositivo que ejecuta 8.1, actualizar el dispositivo a 8.3 ha resuelto el problema. Entonces, o el error ya no está presente en 8.3 ... o el acto de actualizar borró los datos en caché de todos modos.

tom01
fuente