iOS 8 – Impossible d'installer l'application d'entreprise

Notre société dispose d'une application qui peut être téléchargée via un site Web à l'aide d'Enterprise Dissortingbution.

Site de distribution d'entreprise

Dans iOS 8 Beta 5, le fait d'appuyer sur le lien de téléchargement affiche la window contextuelle attendue "(site Web) que vous souhaitez installer (Nom de l'application)". Si vous appuyez sur "installer" dans cette boîte de dialog, l'application est bloquée "En attente …".

App bloqué en attente

Jusqu'à ce qu'il indique enfin: "Impossible de download l'application (nom de l'application) n'a pas pu être téléchargé pour le moment."

Impossible de télécharger l'application

L'installation fonctionne comme prévu en utilisant iOS 7.

L'exécution de l'application à partir de Xcode sous iOS 8 fonctionne.

Comment soutenons-nous Enterprise Dissortingbution iOS 8?

Peut-être qu'un changement doit être apporté au file manifeste? Lorsque j'ai essayé de créer l'application dans Xcode 6 Beta 7, le process d'archivage d'entreprise ne m'a pas incité à créer un file manifeste …

En regardant à travers la console du téléphone tout en essayant d'installer l'une de mes applications, j'ai découvert:

Sep 9 12:16:56 iPhone misagent[94] <Error>: attempt to install invalid profile: 0xe8008011 Sep 9 12:16:56 iPhone installd[40] <Error>: 0x100484000 -[MIInstallableBundle _installEmbeddedProfileInBundle:]: Could not install embedded profile: 0xe8008011 (Expired) 

Raisons à mon insu, Apple a invalidé la moitié de mes profils et n'a pas réussi à m'avertir. Après être allé dans developer.apple.com find des profils invalides:

Hit Edit -> Generate -> Download Rebuild l'application avec le nouveau profil.

Cependant – Les mauvaises nouvelles au less une de mes applications ne parvient pas à installer. Regarder à travers la console ne me donne rien. Je suis convaincu que c'est un bug de pomme alors j'ai déposé un radar: 17622725

J'espère que votre problème est un problème de profil sinon nous devrons attendre jusqu'à ce soir 1800GMT pour voir si Apple l'a réparé.

MODIFIER

Avec iOS8 GM – J'ai juste l' Waiting... – Je vous tiendrai au courant de la progression du rapport de bogue.

MODIFIER

Après le dépannage, quelques corrections ont été trouvées:

Fix 1

Depuis iOS8, si les images que vous liez dans le plist manifeste n'existent pas – Apple n'installera pas l'application sur le téléphone – Le manifeste étant le file que vous liez sur la page de téléchargement: itms-services://?action=download-manifest&url={url}

Assurez-vous full-size-image display-image existent:

 <dict> <key>kind</key> <ssortingng>full-size-image</ssortingng> <key>needs-shine</key> <true/> <key>url</key> <ssortingng>https://{path_to_real_image}</ssortingng> </dict> <dict> <key>kind</key> <ssortingng>display-image</ssortingng> <key>needs-shine</key> <true/> <key>url</key> <ssortingng>https://{path_to_real_image}</ssortingng> </dict> 

Fix 2

Les applications d'entreprise ne seront pas installées si elles existaient auparavant sur iOS7 en raison d'un bug avec iOS8. Une erreur apparaît dans la console:

 Ignore manifest download, already have bundleID: {bundle_id} 

Cela peut être corrigé en changeant temporairement bundleID dans le file manifeste, mais Apple est conscient car ils ont marqué le rapport de bogue comme étant dupliqué. Après les tests internes, vous pouvez également résoudre le problème en appuyant sur la disposition de l'écran d'accueil General -> Reset -> Reset Home Screen Layout

Fix 3

Si vous voyez l'application entrer dans l'étape d' installing... par opposition au loading... presque certainement le problème est le embedded provisioning profile a expiré, pour réparer le téléchargement, vous aurez besoin de ré-archiver votre application avec un nouveau, mis à jour profil d'approvisionnement.

Correction 4

Si vous voyez l'application accéder à l'étape d' installing... et votre provisioning profile est valide – Téléchargez l'application en l'attachant à votre console. (Xcode 6> Fenêtre> Devices> Bottom Left Button [v]), Vous findez probablement que l'installation a échoué avec l' Verification Stage Failed un peu plus bas sera le message d'erreur. Dans mon cas (Entitlements found that are not permitted by provisioning profile) – Pour cette erreur, allez sur developer.apple.com et mettez à jour votre identifiant d'application pour inclure le service correct. Pour moi, les App Groups devaient être activés. Ensuite, régénérez votre provisioning profile

J'ai eu le même problème aujourd'hui: je ne pouvais pas installer une de mes applications Enterprise sur IOs8 (mais sur IOs7). Après plusieurs heures de search, j'ai finalement lu ce message sur la console de l'appareil:

 <Warning>: LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: com.ecaste.Crew-Desk 

Après une longue période de search, j'ai enfin lu ce post: http://support.hockeyapp.net/discussions/problems/26683-not-able-to-download-apps-ios8-beta-5-autoupdate-manually-etc

Et à la fin, je viens de changer le nom de la plist et le lien pour download l'ipa (probablement le second n'est pas nécessaire), et enfin l'application est installée.

Enfin, il semble que c'était un problème de cache dans IOs8 qui considère que l'application était déjà installée (et ce n'était pas le cas, je l'ai désinstallé précédemment).

J'espère que cette aide

Même erreur ici, j'ai essayé de changer bundle-id, bundle-version, plist … mais l'erreur persiste.

Je sais que c'est un peu difficile, mais c'est la seule chose qui fonctionne pour moi:

http://support.hockeyapp.net/discussions/problems/30194-ios8-workaround-can-break-today-extension?full_site=1#comment_35141099

  1. Connectez l'appareil à un Mac ou un PC
  2. Créer une sauvegarde dans iTunes

  3. Installez iExplorer: http://www.macroplant.com/iexplorer/

  4. Lancez iExplorer, puis select le mode démo

  5. Dans la barre latérale de gauche, select Média, puis ouvrez le dossier Téléchargements et supprimez tous les files qu'il contient.

  6. Redémarrer l'appareil

  7. Ouvrez la page de téléchargement et installez la dernière version de votre application

En effet j'omets les deux premières étapes et ça marche parfaitement 🙂

J'espère que ça aide

Définir la cible de deployment inférieure dans

Projet> Paramètre de construction> Cible de deployment iOS

Cibles> Paramètre de construction> Cible de deployment iOS

Je viens d'avoir ce problème en ce moment et il a été provoqué par le plist mainfest (keys: image pleine taille + image-affichage) pointent vers des locations d'image url qui n'existent pas.

On dirait que iOS6 / iOS7 est capable de gérer si les images n'existent pas mais iOS8 est plus ressortingctif à ce sujet.

Sur la base des commentaires précédents sur le message "Ignorer le téléchargement manifeste", nous avons essayé de changer l'ID du bundle (par exemple com.companyName.AppName) dans le .plist pour avoir un nom unique, pour forcer iOS 8 à le download / installer quand même. Une fois installé, il remplace correctement la copy existante.

Je crois qu'il y a 2 problèmes qui se passent ici. Si .plist sur le site Web https pointant vers le file .ipa du certificate d'entreprise signé a un identificateur de regroupement correspondant à une application déjà installée, il ne l'écrasera pas. La version bundle est différente sur tous nos files .plist, elle devrait donc l'installer quand même. iOS 7 ne semble pas avoir ce problème. Nous prévoyons de contourner ce problème en décochant l'identificateur de bundle dans le plist, ce qui le rend toujours unique à la construction.

Le deuxième problème est que lorsque l'application est installée avec succès, elle ne passe pas à l'écran d'accueil ou n'indique rien du tout. Dans iOS 7, après avoir sélectionné le button "Installer" à l'invite, vous passeriez à l'écran d'accueil où l'icône serait sombre, et un indicateur de progression afficherait la progression du téléchargement. Ensuite, l'application aurait un point bleu à côté de lui indiquant qu'il était nouveau. Avec iOS 8, il ne passe pas à l'écran d'accueil, il semble donc ne pas fonctionner. Vous pouvez accéder manuellement à l'écran d'accueil, et vous devriez voir une icône sombre avec un indicateur de progression (maintenant à un nouvel location, car il ne sait pas qu'il replacea une application existante). Après le téléchargement / installation avec succès, il ne place pas le point bleu sur l'application remplacée.

J'espère que cela t'aides.

Cela m'a causé une énorme douleur. J'avais besoin d'installer une nouvelle application OTA sur les téléphones des employés en dehors d'une solution MDM. J'ai essayé d'essayer toutes les solutions possibles sur internet et rien n'a fonctionné. Le plus proche que je pouvais get était pour l'application pour arriver à la phase de «chargement». Ma solution a pris une semaine de travail, en essayant différentes choses. Je ne suis pas sûr de ce qui a fonctionné dans quel ordre et qui aurait fonctionné de toute façon, mais voici ce que j'ai fait:

Dans mon cas, j'avais précédemment construit cette application avec un profil d'approvisionnement à partir d'un développeur (par opposition à un count d'entreprise). Dans Xcode, j'ai changé le Bundle Identifier pour lui donner un nouveau nom, par exemple, il était à l'origine com.mydomain.myapp et est devenu com.mydomain.mysuperapp.

La signature de code assurée dans l'application était valide et incluait le certificate de dissortingbution pour le count Entreprise

J'avais utilisé le mauvais profil d'approvisionnement (un avec aucune identité associée), donc, parce que j'ai choisi 'automatique', il a bien construit mais n'allait jamais s'installer. J'ai donc modifié la signature de code pour la version sur mon profil de dissortingbution (plutôt que sur le profil de développement)

Assurez-vous que l'application a été définie avec une cible de deployment suffisamment faible pour les périphériques qui la downloadont

Archivé le file et exporté pour le deployment Enterprise

Le manifeste doit contenir l'image png 57×57 et l'image png 512×512 sinon l'installation ne dépasse pas l'étape 'attente'

J'ai créé un file index.html qui ressemblait à ceci:

 <html> <body> <a href="itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/dw80wahlwupkyd5/MyApp.plist"> Install Learning Chunks App from Dropbox</a> </body> </html> 

J'avais utilisé un échantillon de plist que j'ai trouvé en ligne et il a inclus quelques arrangements facultatifs. Quand je les ai laissés, le téléchargement n'a pas fonctionné. Je les ai pris. Mon file plist manifeste a été nommé: MyApp.plist et ressemblait à ceci:

 <!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> <ssortingng>software-package</ssortingng> <key>url</key> <ssortingng>https://dl.dropboxusercontent.com/s/r1bljbkcows7sje/mysuperapp.ipa</ssortingng> </dict> <dict> <key>kind</key> <ssortingng>display-image</ssortingng> <key>needs-shine</key> <true/> <key>url</key> <ssortingng> https://dl.dropboxusercontent.com/s/ujk9ipcv2naltut/logo57.png</ssortingng> </dict> <dict> <key>kind</key> <ssortingng>full-size-image</ssortingng> <key>needs-shine</key> <true/> <key>url</key> <ssortingng>https://dl.dropboxusercontent.com/s/gpebomok83mp9d5/logo512.png</ssortingng> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <ssortingng>com.mydomain.mysuperapp</ssortingng> <key>bundle-version</key> <ssortingng>1.0</ssortingng> <key>kind</key> <ssortingng>software</ssortingng> <key>title</key> <ssortingng>My Super App</ssortingng> <key>subtitle</key> <ssortingng>My Super App</ssortingng> </dict> </dict> </array> </dict> </plist> 

J'ai téléchargé le MyApp.plist, index.html, logo57.png, logo512.png et MyApp.ipa à DropBox. J'ai partagé l'index.html avec ceux qui ont besoin de download l'application.

L'user peut alors cliquer sur le lien partagé dans l'email et l'application devrait s'installer.

EDIT: Le problème ci-dessous est un faux-fuyant. Comme Dylan Hand mentionné ci-dessus, le problème pour moi était que j'avais brisé des liens d'image dans le file manifeste. Apparemment, cela n'a pas d'importance pour ios7 mais ios8 ne finira pas l'installation si cela est vrai. Lorsque j'ai supprimé ces references, cela a parfaitement fonctionné.


J'ai le même set de symptômes que OP (c'est-à-dire "Impossible de download l'application" mais seulement sur iOS 8). Lorsque j'essaie de valider (Organizer -> Valider), je reçois le message suivant.

Capture d'écran du résultat de la validation

Cela m'a conduit à ce post: https://stackoverflow.com/a/25757196/751136

Il prétend que la re-génération de vos profils de provisioning devrait aboutir à un nouveau droit appelé beta-reports-active . Lorsque j'essaie de le faire dans mon count d'entreprise, les nouveaux profils n'ont pas le nouveau droit. Cependant, lorsque je régénère des profils de provisionnement dans un autre count non professionnel, les nouveaux profils ont ce champ.

Si vous construisez vos applications iOS avec un script de construction et que vous utilisiez précédemment PackageApplication avec l'indicateur –sign, cela peut causer des problèmes. L'indicateur –sign ne fonctionne plus lors de la génération du 10.10 et la suppression a réinstallé toutes nos applications iOS.

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

Ce problème m'a rendu fou, Seulement cela a aidé pour Enterprise Dissortingbution: Effectuez tous les parameters de construction requirejs et click "Archive". Effectuez le process de dissortingbution d'entreprise. Vous verrez la window de l'organisateur. Sur un ordinateur Mac, localisez le file .xcacrchive en sélectionnant KRelease et en choisissant "Show in finder".

L'user est dirigé vers le dossier où se trouve le file .xcarchive. Cliquez-droit sur le file .xcarchive et select l'option "Afficher le contenu du package".

Dans la window finder ouverte, allez dans Products / Applications Select et copyz le file .app

Créez un nouveau dossier sur votre disque avec le nom "Payload". Remarque: Le nom du dossier est sensible à la casse. Collez le file .app copié dans le dossier "Payload". Compressez le dossier Payload pour get le file Payload.zip Renommez le file Payload.zip en .ipa et empackageez-le avec votre file .plist. le file .ipa est prêt à être installé sur les périphériques enregistrés dans le profil d'approvisionnement utilisé dans la génération .xcarchive.

J'ai résolu ce problème.

  1. Étant donné qu'Apple a modifié les profils d'approvisionnement, veuillez RENOUVELER les profils d'approvisionnement (Fichier 1) et les copyr dans la «Charge utile /».
  2. Assurez-vous qu'il y a un Entitlements.plist (Fichier 2) dans le "Payload /", et ce file plist DOIT être PLAIN TEXT qui est créé par un éditeur de text.
  3. Assurez-vous qu'il y a un Info.plist (Fichier 3) dans "Payload /", et ceci est créé par XCode;
  4. Copiez le Entitlements.plist (Fichier 4) n'importe où ailleurs sauf le "Payload /".
  5. Assurez-vous que "Identificateur de regroupement" dans le file 1-4 doit être identique.
  6. Utilisez ce Entitlements.plist (Fichier 4) pour re-signer le file IPA.

Vous pouvez le démissionner comme ça

 codesign -fs "iPhone Dissortingbution: Your Company Name" --entitlements=/Users/SenTR/Downloads/codesign/Entitlements.plist /Users/SenTR/Downloads/codesign/Payload/Your_Project_name.app 

Exemple de Entitlements.plist

 <?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>application-identifier</key> <ssortingng>PREFIX.yourappBundleID</ssortingng> <key>aps-environment</key> <ssortingng>production</ssortingng> <key>get-task-allow</key> <false/> <key>keychain-access-groups</key> <array> <ssortingng>PREFIX.yourappBundleID</ssortingng> </array> </dict> </plist> 

Si vous connaissez le chinois, cela vous sera utile.

http://hennry.com/2015/03/fail-to-resign-ipa-since-ios8/

Ces réponses sont des éléments valides à vérifier, mais si quelqu'un d'autre les a essayées comme je l'ai fait et a toujours des problèmes, assurez-vous que votre application contient le paramétrage correct qui permet de compresser correctement les archives exscopes . C'est ce qui nous a mordu, même après avoir suivi toutes les étapes ci-dessus. De plus, la réponse qui parle de s'assurer que le site web contient des liens d'image valides ne semble pas affecter quoi que ce soit, au less pour nous en utilisant XCode 6.3 pour exporter des archives. Cela a fonctionné / n'a pas fonctionné indépendamment de ces liens étant corrects. C'est évidemment une bonne idée d'avoir cette information correcte cependant. Une autre remarque intéressante est que si nous exportions en utilisant XCode 5, les ipa étaient TOUJOURS au format correct (voir l'article SO lié ci-dessus); il semble que XCode 6+ est maintenant difficile à ce sujet.

Mon problème a été corrigé en supprimant tous les outut construits, puis en reconstruisant complètement.

Une autre source possible de ce problème d'installation est une non-concordance de cas entre le projet et le profil de provisioning (particulièrement avec des builds de command line automatisés ou autres). Les ID de regroupement sont sensibles à la casse. Par exemple, si l'identificateur de regroupement d'applications dans le profil d'approvisionnement est com.example.MyApp et que la configuration de projet et / ou Info.plist utilise com.Example.Myapp , Xcode 7.1 échouera avec une erreur de signature de code ou retombera dans un approvisionnement générique profile (un avec * bundle id, ce qui pourrait être un problème) mais la command xcodebuild réussira. Jenkins downloada également la version signée par erreur à Hockeyapp par exemple. Le build va download sur les machines clientes mais ne s'installera pas en raison de la non-concordance des tickets.

Donc,

Correction 0

Vérifiez que l'identifiant de l'set d'applications est configuré de la même manière dans le projet et sur le portail Apple Developer.

Le moyen le plus simple d'éviter ce problème particulier consiste à toujours utiliser des caractères minuscules dans vos identifiants de regroupement. La copy de l'ID de bundle depuis le portail Apple Developer et son insertion dans les parameters de construction du projet ( PRODUCT_BUNDLE_IDENTIFIER ) sont également utiles.

Bien que j'aie eu le problème avec un count d'entreprise, il pourrait en fait ne pas être spécifique à ce type de dissortingbution.

Correction 0

Assurez-vous de consulter la note technique d'Apple intitulée Dépannage d'échec d'installation pour iOS .

Mon problème était que j'avais un espace à la fois dans mon nom de file ipa, et la reference à cette ipa dans mon plist. Enlever l'espace dans les deux a permis l'installation