web-dev-qa-db-fra.com

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 de Enterprise Distribution.

Enterprise Distribution Site

Dans iOS 8 Bêta 5, appuyer sur le lien de téléchargement ouvre la fenêtre contextuelle attendue "(site Web) souhaite installer (Nom de l'application)". En tapant sur "installer" dans cette boîte de dialogue, l'application reste bloquée "En attente ..."

App stuck waiting

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

Unable to Download App

L'installation fonctionne comme prévu avec iOS 7.

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

Comment supportons-nous Enterprise Distribution iOS 8?

Peut-être faut-il modifier le fichier Manifest? Lorsque j'ai essayé de créer l'application dans Xcode 6 Beta 7, le processus d'archivage d'entreprise ne m'a pas demandé de créer un fichier manifeste ...

63
Dylan Hand

En regardant à travers la console du téléphone 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)

Des raisons inconnues de moi, Apple a invalidé la moitié de mes profils et n'a pas réussi à me prévenir. Après être allé sur developer.Apple.com, trouvez tous les profils non valides:

Appuyez sur Edit -> Generate -> Download Reconstruisez l'application avec le nouveau profil.

Cependant - La mauvaise nouvelle encore au moins une de mes applications ne parvient pas à installer. Regarder à travers la console ne me donne rien. Je suis convaincu qu’il s’agit d’un bogue de Apple). Nous avons donc déposé un radar: 17622725

J'espère que votre problème est un problème de profil, sinon nous devrons peut-être attendre 1800GMT pour voir si Apple l'a corrigé.

MODIFIER

Avec iOS8 GM - je viens d'obtenir Waiting...] - je vous tiendrai au courant de la progression du rapport de bogue.

EDIT

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

Fix 1

À partir de iOS8, si les images auxquelles vous associez le pliste de manifeste n'existent pas - Apple n'installera pas l'application sur le téléphone - le manifeste étant le fichier auquel vous créez un lien lors du téléchargement. page: itms-services://?action=download-manifest&url={url}

Assurez-vous que full-size-image Et display-image Existent:

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

Fix 2

Les applications d'entreprise ne s'installeront pas si elles existaient auparavant sur iOS7 en raison d'un bogue avec iOS8. Une erreur apparaît dans la console:

Ignore manifest download, already have bundleID: {bundle_id}

Cela peut être corrigé en modifiant temporairement le bundleID dans le fichier manifeste, mais Apple sont conscients, car ils signalent que le rapport de bogue est dupliqué. Après les tests internes, vous corrigez également le problème. en reposant la disposition de l'écran d'accueil General -> Reset -> Reset Home Screen Layout

Fix

Si vous voyez l'application entrer dans la phase installing... Plutôt que loading..., Le problème est presque certainement que le embedded provisioning profile A expiré. Pour corriger le téléchargement, vous aurez besoin de ré-archiver votre application avec un nouveau profil d'approvisionnement mis à jour.

Fix 4

Si vous voyez l'application se rendre à l'étape installing... Et que votre provisioning profile Est valide - Téléchargez l'application alors qu'elle est attachée à votre console. (Xcode 6> Fenêtre> Périphériques> Bouton inférieur gauche [v]), vous constaterez probablement que l'installation a échoué avec le message d'erreur Verification Stage Failed Ci-dessous. Dans mon cas (Entitlements found that are not permitted by provisioning profile) - Pour cette erreur, allez à developer.Apple.com et mettez à jour votre identifiant d'application pour inclure le service correct. Pour moi, App Groups Devait être activé. Puis régénérer votre provisioning profile

62
William George

J'ai le même problème aujourd'hui: je ne pouvais pas installer l'une de mes applications d'entreprise sur IOs8 (mais sur IOs7). Après de nombreuses heures de recherche, j'ai finalement lu ce message sur la console du périphérique:

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

Après une longue période de recherche, j'ai finalement lu le message suivant: http://support.hockeyapp.net/discussions/problems/26683-not-able-to-download-apps-ios8-beta-5-autoupdate -manuellement-etc

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

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

J'espère que cette aide

7
ecaste

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 compliqué, 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. Connecter 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 sélectionnez le mode démo.

  5. Dans la barre latérale gauche, sélectionnez Média, ouvrez le dossier Téléchargements et supprimez tous les fichiers 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 cela fonctionne parfaitement :)

J'espère que ça aide

7
Eva Madrazo

Définir la cible de déploiement plus bas dans

Projet> Paramètre de construction> Cible de déploiement iOS

Cibles> Paramètre de construction> Cible de déploiement iOS

6
Shrikant Tanwade

Sur la base des commentaires précédents sur le message "ignorer le téléchargement du manifeste", nous avons essayé de modifier l'ID de l'ensemble (c.-à-d. Com.companyName.AppName) dans la liste .plist afin de lui attribuer un nom unique, afin de forcer iOS 8 à le télécharger/l'installer de toute façon. Une fois installé, il remplace correctement la copie existante.

Je crois qu'il y a 2 problèmes qui se passent ici. Si la liste .plist du site Web https pointant vers le fichier .ipa signé par le certificat d'entreprise a un identificateur d'ensemble qui correspond à une application déjà installée, il ne l'écrase pas. La version de paquetage est différente sur tous nos fichiers .plist, vous devez donc l’installer quand même. iOS 7 ne semble pas avoir ce problème. Nous prévoyons de contourner ce problème en bousillant l'identifiant de paquet dans le plist afin qu'il soit toujours unique à la construction.

Le deuxième problème est que, lorsqu’elle installe correctement l’application, elle ne bascule pas vers l’écran d’accueil ni n’indique qu’elle fait quoi que ce soit. Dans iOS 7, après avoir sélectionné le bouton "Installer" de l'invite, l'écran d'accueil était affiché, l'icône étant sombre et un indicateur de progression indiquant la progression du téléchargement. Ensuite, l'application aurait un point bleu à côté pour indiquer qu'il était nouveau. Avec iOS 8, l'écran d'accueil ne bascule pas et semble donc ne pas fonctionner. Vous pouvez manuellement accéder à l'écran d'accueil et vous devriez voir une icône sombre avec un indicateur de progression (maintenant à un nouvel emplacement, car il ne sait pas qu'il remplacera une application existante). Une fois le téléchargement/installation effectué, il ne place pas le point bleu sur l'application remplacée.

J'espère que cela t'aides.

3
Chris J

Je viens d'avoir ce problème en ce moment et il a été causé par le plist mainfest (clés: image pleine taille + image d'affichage) pointant vers des emplacements d'image URL qui n'existent pas.

Il semble que iOS6/iOS7 soit capable de gérer si les images n'existent pas, mais iOS8 est plus restrictif à ce sujet.

3
Steven Tsang

Cela m'a causé une douleur énorme. J'avais besoin d'installer une nouvelle application OTA sur les téléphones des employés uniquement en dehors d'une solution MDM. Il me semblait essayer toutes les solutions possibles que je pouvais trouver sur Internet et rien ne fonctionnait. Le plus proche que je pouvais obtenir était pour l’application d’atteindre le stade de "chargement". Ma solution a pris une semaine de travail, essayant différentes choses. Je ne sais pas trop qui a travaillé 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 créé cette application avec un profil de provisionnement d'un compte développeur (par opposition à un compte d'entreprise). Dans Xcode, j'ai modifié l'identifiant de l'ensemble pour lui attribuer un nouveau nom. Par exemple, il s'agissait à l'origine de com.mydomain.myapp et est devenu com.mydomain.mysuperapp.

La signature de code assurée dans l'application était valide et incluait le certificat de distribution du compte d'entreprise.

J’avais utilisé le mauvais profil de provisioning (sans identités associées), j’avais choisi "automatique", mais c’était parfait, mais je n’allais jamais l’installer. J'ai donc changé la signature de code pour Release dans mon profil de distribution (plutôt que mon profil de développement).

Assurez-vous que l'application a été définie avec une cible de déploiement suffisamment basse pour les appareils qui la téléchargeront.

Archivé le fichier et exporté pour le déploiement en entreprise

Le manifeste doit contenir l’image png 57x57 et l’image png 512x512, sinon l’installation n’aura pas dépassé la phase d’attente.

J'ai créé un fichier 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 pliste que j'avais trouvé en ligne et qui incluait certains paramètres facultatifs. Lorsque je les ai laissés, le téléchargement n’a pas fonctionné. Je les ai sortis. Mon fichier plist manifeste s'appelait: 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>
                        <string>software-package</string>
                        <key>url</key>
                        <string>https://dl.dropboxusercontent.com/s/r1bljbkcows7sje/mysuperapp.ipa</string>
                    </dict>
                    <dict>
                        <key>kind</key>
                        <string>display-image</string>
                        <key>needs-shine</key>
                        <true/>
                        <key>url</key>
              <string> https://dl.dropboxusercontent.com/s/ujk9ipcv2naltut/logo57.png</string>
                    </dict>
                    <dict>
                        <key>kind</key>
                        <string>full-size-image</string>
                        <key>needs-shine</key>
                        <true/>
                        <key>url</key>
                  <string>https://dl.dropboxusercontent.com/s/gpebomok83mp9d5/logo512.png</string>
                    </dict>
            </array>
            <key>metadata</key>
                <dict>
                    <key>bundle-identifier</key>
                    <string>com.mydomain.mysuperapp</string>
                    <key>bundle-version</key>
                    <string>1.0</string>
                    <key>kind</key>
                    <string>software</string>
                    <key>title</key>
                    <string>My Super App</string>
                    <key>subtitle</key>
                    <string>My Super App</string>
                </dict>
        </dict>
        </array>
    </dict>
</plist>

J'ai transféré les fichiers MyApp.plist, index.html, logo57.png, logo512.png et MyApp.ipa sur DropBox. J'ai partagé le fichier index.html avec ceux qui ont besoin de télécharger l'application.

L'utilisateur peut ensuite cliquer sur le lien partagé dans l'e-mail et l'application doit s'installer.

2
JanB

Si vous créez vos applications iOS avec un script de génération et que vous utilisiez précédemment PackageApplication avec l'indicateur --sign, cela peut être à l'origine de problèmes. Le drapeau --sign ne fonctionne plus lorsque vous compilez 10.10 et que le supprimer entraîne la réinstallation de toutes nos applications iOS.

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

1
James Moore

EDIT: La question ci-dessous est un harnais rouge. Comme Dylan Hand l'a mentionné ci-dessus, le problème pour moi était que j'avais des liens d'image brisés dans le fichier manifeste. Apparemment, cela n'avait pas d'importance pour ios7, mais ios8 ne terminera pas l'installation si cela est vrai. Lorsque j'ai supprimé ces références, cela a parfaitement fonctionné.


J'ai le même ensemble de symptômes que OP (message "Impossible de télécharger l'application", mais uniquement sur iOS 8). Lorsque j'essaie de valider (c.-à-d. Organiseur -> Valider), je reçois le message suivant.

Screenshot of the result of validation

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

Il affirme que la régénération de vos profils de provisioning devrait générer un nouveau droit appelé beta-reports-active. Lorsque j'essaie de le faire dans mon compte d'entreprise, les nouveaux profils NE disposent PAS du nouveau droit. Cependant, lorsque je régénère des profils de provisioning dans un autre compte non-entreprise, les nouveaux profils ont ce champ.

1
eremzeit

Ce problème m'a rendu fou. Seule cette solution a aidé Enterprise Distribution: définissez tous les paramètres de construction requis et cliquez sur "Archiver". Effectuer le processus de distribution d'entreprise. Vous verrez apparaître la fenêtre de l'organisateur. Sur une machine Mac, localisez le fichier .xcacrchive en sélectionnant KRelease, puis en sélectionnant "Afficher dans le Finder".

L'utilisateur accède au dossier dans lequel se trouve le fichier .xcarchive. Cliquez-droit sur le fichier .xcarchive et sélectionnez l'option “Afficher le contenu du paquet”.

Dans la fenêtre du Finder ouverte, sélectionnez Produits/Applications. Sélectionnez et copiez le fichier .app.

Créez un nouveau dossier quelque part sur votre disque avec le nom "Payload". Remarque: le nom du dossier est sensible à la casse. Collez le fichier .app copié dans le dossier "Payload". Compressez le dossier Payload pour obtenir le fichier Payload.Zip. Renommez le fichier Payload.Zip en .ipa et associez-le à votre fichier .plist Done !!! le fichier .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.

1
thomas

Mon problème était que j'avais un espace à la fois dans mon nom de fichier ipa et la référence à cet ipa dans mon plist. Supprimer l’espace dans les deux a permis l’installation

0
jimmyjudas

J'ai résolu ce problème.

  1. Depuis Apple a modifié les profils de provisionnement, RENOUVELLEZ les profils de provisionnement (fichier 1) et copiez-le dans le "Charge utile /".
  2. Assurez-vous qu’il existe un Entitlements.plist (fichier 2) dans la "Données utiles /", et que ce fichier plist DOIT être PLAIN TEXT qui est créé par un texte. éditeur.
  3. Assurez-vous qu’il existe un fichier Info.plist (fichier 3) dans "Charge utile /", créé par XCode;
  4. Copiez le fichier Entitlements.plist (fichier 4) ailleurs que dans "Payload /".
  5. Assurez-vous que "Identificateur de paquet" dans le fichier 1-4 doit être identique.
  6. Utilisez ce fichier Entitlements.plist (fichier 4) pour signer de nouveau le fichier IPA.

Vous pouvez le démissionner comme ça

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

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

Si vous connaissez le chinois, cela vous sera utile.

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

0
Hennry

Ces réponses sont des éléments valables à vérifier, mais au cas où quelqu'un d'autre les aurait essayées comme moi et TOUJOURS eu des problèmes, assurez-vous que votre application contient le paramètre de plist approprié permettant de compresser correctement l'archive exportée . Ce est ce que nous bit, même après avoir suivi toutes les étapes ci-dessus. Il convient également de noter que la réponse qui consiste à s'assurer que la pliste du site Web contient des liens d'image valides ne semble affecter aucun élément, du moins pour nous qui utilisons XCode 6.3 pour exporter des archives. Cela a fonctionné/n'a pas fonctionné indépendamment du fait que ces liens soient 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 lié SO article ci-dessus); il semble que XCode 6+ soit maintenant pointilleux à ce sujet.

0
stonedauwg

Une autre source possible de ce problème d'installation est une incompatibilité de casse entre le projet et le profil d'approvisionnement (en particulier avec les versions automatisées ou autres à l'aide d'une ligne de commande). Les identifiants de paquet sont sensibles à la casse. Par exemple, si l'identificateur de groupe d'applications dans le profil d'approvisionnement est com.example.MyApp et la configuration du projet et/ou Info.plist utilise com.Example.Myapp, Xcode 7.1 échouera avec une erreur de signature de code ou retombera sur un profil d’approvisionnement générique (un profil avec * bundle id, qui pourrait être un problème), mais la commande xcodebuild aboutira. Jenkins téléchargera également la version mal signée sur Hockeyapp, par exemple. La version sera téléchargée sur les périphériques clients mais ne s’installera pas à cause de l’incompatibilité des cas.

Donc,

Fix 0

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

Le moyen le plus simple d'éviter ce problème est de toujours utiliser des caractères minuscules dans vos identificateurs d'ensembles. Copier l’identifiant du bundle de Apple pour les développeurs et le coller dans les paramètres de construction du projet (PRODUCT_BUNDLE_IDENTIFIER) aide aussi bien sûr.

Bien que le problème concerne un compte d'entreprise, il se peut qu'il ne soit pas spécifique à ce type de distribution.

Fix 0´

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

0
Leon Deriglazov

Mon problème a été corrigé en supprimant toutes les sorties construites, puis en reconstruisant complètement.

0
Mike