ios enterprise over-the-air

iOS Enterprise OTA distribution No se puede descargar la aplicación



over-the-air (11)

Creé una aplicación para iOS y quiero distribuirla por aire. Seguí esta guía:

http://help.apple.com/iosdeployment-apps/mac/1.1/?lang=en-us#app43ad77ea

La aplicación está firmada con el certificado de empresa y contiene el perfil de aprovisionamiento de distribución.

Cuando intento descargar la aplicación en el ipad (utilizando la técnica descrita en esta guía), aparece un icono cuadrado con el ícono de descarga en la pantalla con el nombre "Esperando ...", y un segundo después, el nombre cambia a mi nombre de la aplicación real y luego otra vez un segundo después recibo el mensaje de error:

No se puede descargar la aplicación

"Su aplicación" no se pudo descargar en este momento.

En la guía, hay tres consejos para solucionar problemas:

Si la distribución de la aplicación inalámbrica falla con un mensaje de "no se puede descargar", verifique lo siguiente:

Asegúrese de que la aplicación está firmada correctamente. Pruébelo al instalarlo en un dispositivo con la Utilidad de configuración del iPhone o el Configurador de Apple, y ver si ocurre algún error.

Asegúrese de que el enlace al archivo de manifiesto sea correcto y que los usuarios de la web puedan acceder al archivo de manifiesto.

Asegúrese de que la URL del archivo .ipa (en el archivo de manifiesto) sea correcta y que los usuarios de la web puedan acceder al archivo .ipa.

Revisé las tres cosas y están bien.

¿Qué más podría causar mis problemas de descarga?


Asegúrese de que la carcasa coincida en todos los archivos. Tienden a ser insensibles a mayúsculas y minúsculas.


Como mencionó alexey , demasiadas razones pueden causar ese mensaje. Apple lo usa como "captura todos los errores".

Puedes diagnosticarlo a través de la Consola . Conecte el dispositivo a su escritorio y acceda a él desde el Organizador de XCode (solo para mac) o la Utilidad de configuración del iPhone (mac y windows). Pero...

¡Simplemente no es tan simple! :-(

La consola puede estar lejos de ser suficiente. A veces no hay un mensaje relevante allí.

Entonces, el último recurso es seguir una lista de verificación . Haciendo todo desde cero otra vez. Hay muchos out there ... Pero a continuación hay mi lista de verificación genérica y no detallada para la distribución Over The Air , en este momento.

  1. Tenga una compilación de distribución : esta es la parte más complicada, hecha siempre en la web, y Apple cambia los pasos todo el tiempo. En general, necesita un certificado , un identificador y el perfil de aprovisionamiento . Listar dispositivos es casi siempre obligatorio. Mi elección actual es " Distribución -> En casa ".

    PD: Si desea enumerar los dispositivos, asegúrese de que los UDID sean correctos. Muchos problemas reportados aquí.

  2. Establezca el perfil en Proyecto -> Crear configuración - Desde XCode 5, las cosas cambiaron. En lugar de firmar el código con una identidad , puede borrar todo eso y configurarlo en * Firma de código -> * Perfil de aprovisionamiento . La identidad debe cambiar automáticamente a " Automático ". Tampoco es necesario descargar manualmente los archivos del paso 1 e instalarlos. XCode maneja eso ahora.

  3. Archivo : en Xcode 5, ya no es necesario "Construir para archivo". Sólo archívalo. Debería aparecer a continuación en el Organizador , y tomará algún tiempo si es un gran proyecto. Pueden surgir muchos errores en este paso, pero casi siempre están relacionados con la compilación de código y no con OTA.

  4. Implementar - Ahora en Organizador -> Archivos , seleccione el archivo adecuado (ya debería estar seleccionado como el más reciente), haga clic en " Distribuir ", luego Guardar para Enterprise o Implementación Ad Hoc . Puede ser una gran espera ahora. Al guardar el archivo, hay una opción para " Guardar para la distribución empresarial ". Ese es un nombre completamente engañoso. Lo que realmente hace es crear el archivo plist . Si ya tienes uno, está bien. Incluso puedes editarlo manualmente, lo que generalmente es mejor. El plist será necesario para el paso (5). Aquí hay una buena:

    <?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>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>http://example.com/app.ipa</string> </dict> <dict> <key>kind</key> <string>full-size-image</string> <key>needs-shine</key> <false/> <key>url</key> <string>http://example.com/FullSizeImage.png</string> </dict> <dict> <key>kind</key> <string>display-image</string> <key>needs-shine</key> <false/> <key>url</key> <string>http://example.com/Icon.png</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.example.app</string> <key>kind</key> <string>software</string> <key>subtitle</key> <string>for iOS</string> <key>title</key> <string>My App</string> </dict> </dict> </array> </dict> </plist>

  5. Distribuir : omita este paso si desea instalarlo utilizando XCode o la Utilidad de configuración del iPhone. Ya terminaste Esto está poniendo en el archivo en un sitio web . "Simplemente" agregue una página HTML con un enlace href como este:

    itms-services://?action=download-manifest&url=http://example.com/app.plist

    Desafortunadamente tratar con servidores web nunca es simple. Así que también compruebe el tipo de servidor mime ! He hecho un par de archivos PHP para tratar con ellos, si su servidor es compatible con PHP. Solo mantenga sus archivos como están (el plist , html y ipa ) y vincule a app.plist.php en app.plist.php lugar:

    app.plist.php

    $file = fopen("app.plist", "r"); while(!feof($file)){ $line = fgets($file); print str_replace(".ipa", ".ipa.php", $line); } fclose($file); ?>

    app.ipa.php

    <?php header(''Content-type: application/octet-stream''); $file = fopen("app.ipa", "r"); while(!feof($file)){ $line = fgets($file); print $line; } fclose($file); ?>

  6. Verificar : asegúrese de que todos los archivos listados en la matriz de activos estén disponibles para descargar. Si alguno de estos archivos devuelve 404 o similar (incluidos los iconos), la instalación completa fallará. Debe (A) hacer que esos archivos estén disponibles o (B) eliminar esas entradas faltantes de la lista. Las entradas de iconos no son necesarias para que la descarga funcione.

    Aquí hay un ejemplo de lista sin iconos:

    <?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>items</key> <array> <dict> <key>assets</key> <array> <dict> <key>kind</key> <string>software-package</string> <key>url</key> <string>http://example.com/app.ipa</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.example.app</string> <key>kind</key> <string>software</string> <key>subtitle</key> <string>for iOS</string> <key>title</key> <string>My App</string> </dict> </dict> </array> </dict> </plist>

Los ejemplos de archivos son una parte muy importante de la lista de verificación. Tienen que ser 100% correctos.

¡Comprueba dos veces los archivos plist y html!

PD: Estoy escribiendo esta respuesta porque, en mi caso, era un asunto "simple" de enlace incorrecto en el archivo .plist . Y, como tal, es difícil de diagnosticar. Bueno, solo haciendo esta lista de verificación podría encontrar el error! ¡Estaba apuntando a "another-app.ipa" en lugar de "app.ipa"!


En mi caso, el problema estaba en mi dispositivo; una versión anterior de la misma aplicación se instaló con el mismo identificador de paquete (descargado de applstore), así que ahora, cuando intentaba descargar su nueva versión a través de la distribución empresarial, no estaba haciendo nada, sin ningún error. Eliminar la versión existente del dispositivo solucionado mi problema.


En mi caso, hice lo siguiente para deshacerme del mensaje "no se puede conectar con dl.dropboxusercontent" después de proporcionar un enlace compartido de ipa. 1. Se eliminó la sección md5 de plist 2. Se cargaron 512 * 512 y 57 * 57 imágenes al cuadro desplegable, y se proporcionó un enlace compartido en fill_size_image y display_image en plist.


Experimentamos el mismo mensaje de error cuando intentamos instalar una aplicación iOS 5+ en un teléfono iOS4.3.5. ¿También verificó los objetivos de implementación / construcción y la arquitectura de destino para que coincidan con los dispositivos que muestran ese problema?


Hay muchas razones para causar este mensaje.

La mejor manera de diagnosticarlo es conectar un dispositivo a Mac y buscar Consola para el dispositivo en el Organizador .

En mi caso, por ejemplo, fue:

verify_bundle_metadata: esta aplicación no se creó para admitir esta familia de dispositivos


Intente verificar el bundle identifier en su XCode y archivo .plist


Lo primero que debe verificar aquí es que el dispositivo que está instalando tiene el sistema operativo correcto para la aplicación que está instalando. Por ejemplo, si la aplicación está diseñada para iOS 11 y su dispositivo tiene iOS 10, entonces la aplicación se instalará, pero verá este error "No se puede descargar la aplicación".


Me encontré en la consola.

installcoordinationd (MobileInstallation) [99]: **** bundleID ****: 5: 11: 1: 1: actualizando PlaceholderMetadata para **** bundleID **** con error 1 _LSInstallType 1, subyacenteError (Error Domain = MIInstallerErrorDomain Código = 13 "Error al verificar la firma del código de /private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.IoCSM9/extracted/Payload/App.app: 0xe8008016 (El ejecutable fue firmado con derechos no válidos.) "UserInfo = {LibMISErrorNumber = -402620394, LegacyErrorString = ApplicationVerificationFailed, SourceFileLine = 147, FunctionName = + [MICodeSigningVerifier_permas_prosas.prosas de animales / animales / animales / animales / animales / animales / animales / animales / mujer / niño / niño / niño / niño / niño / niño / niño / niño / mujer /Caches/com.apple.mobile.installd.staging/temp.IoCSM9/extracted/Payload/App.app: 0xe8008016 (El ejecutable se firmó con derechos no válidos.)}), Fuente 17>

Aquí deberíamos mirar:
Error al verificar la firma del código de App.app
El ejecutable fue firmado con derechos inválidos.

En mi caso fue porque descargué la compilación empresarial de amazon. Pero el perfil de aprovisionamiento, con el que se creó, caducó (se determinó en la consola del desarrollador ).

Otro con el otro propósito:

"Esta aplicación no se pudo instalar en este momento". UserInfo = {NSLocalizedDescription = Esta aplicación no se pudo instalar en este momento., NSUnderlyingError = 0x100cbd3c0 {Error Domain = MIInstallerErrorDomain Code = 64 "La cadena de derechos del identificador de la aplicación de la actualización (BBBUUUU.com.bundle.www) no coincide con la aplicación instalada. cadena de identificador (CCCEEEE.com.bundle.www); rechazando la actualización ". UserInfo = {LegacyErrorString = MismatchedApplicationIdentifierEntitlement, tipo de identificación de tipo de identificación de parche: valor] [], SourceFileLine = 8, NSLocalizedDescription = Upgrade .com.bundle.www); rechazado

Aquí acabo de eliminar la versión anterior de la aplicación. El error fue porque cambié el equipo para la ID del paquete y se instaló la aplicación con la ID del paquete anterior.

Consola abierta con:

  • Xcode > Window > Devices
  • Selecciona el dispositivo
  • Expanda una consola con un cuadro con una flecha dentro de ella en la esquina inferior izquierda.

Otro problema que podría ser es que tanto el .plist Y el .ipa deben estar alojados con HTTPS y no solo HTTP regular. La cadena del paquete de software debería verse a continuación:

<key>kind</key> <string>software-package</string> <key>url</key> <string>https://example.com/app.ipa</string>

Poco estúpido descuido pero me estaba faltando un rato.


Respondiendo mi propia pregunta:

El problema fue que una de las miniaturas no tenía configurada la ruta correcta en el archivo manifest.plist, por lo que no solo la ipa necesita la ruta correcta, sino también los iconos de descarga temporal, de lo contrario, la instalación fallará con el mensaje de error mencionado.