Distribution de mises à jour d'applications d'entreprise sur iOS 8

111

J'ai une application d'entreprise que je distribue via une itmsURL:

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

Sur iOS 7, les téléchargements et les mises à jour fonctionnent correctement. Sur iOS 8, cependant, j'obtiens l'erreur:

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

Dans mon plist, j'ai

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

et sur mon application sur iOS 8, j'utilise la version 0.2.1

Patrick Perini
la source
1
Quelle version d'iOS8 utilisez-vous. J'ai entendu parler de personnes ayant des problèmes comme celui-ci avec la bêta 5.
Anil Natha
7
Exactement le même problème. iOS 8 GM. Ces applications refusent simplement de télécharger maintenant.
Carl Sjogreen
3
J'exécute l'ios8.0 maintenant officiellement publié et l'installation ne démarre pas. J'ai jeté un coup d'œil à la console et il y a un message disant: "<Avertissement>: LoadExternalDownloadManifestOperation: Ignorer le téléchargement du manifeste, déjà avoir bundleID: MYBUNDLENAME" ... la restauration de l'appareil ou la modification de l'identifiant du bundle fera l'affaire
user2387149
duplication possible d' iOS 8 - Impossible d'installer l'application d'entreprise
Kristopher Johnson
1
@pcperini Je pense que les réponses dans l'autre article contiennent plus d'informations. Aucune infraction prévue.
Kristopher Johnson

Réponses:

91

J'ai également rencontré ce problème avec notre distribution d'applications. Nous avons pu résoudre ce problème en `` simulant '' l'identifiant du bundle dans le .plist en utilisant pour la distribution de téléchargement, en conservant l'identifiant de notre bundle ipa.

Par exemple, dans votre plist:

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

remplacez com.mycom.MyApp par com.mycom.MyApp.ios8fix

L'application sera installée à l'aide d'une nouvelle icône d'application, qui disparaîtra après l'installation.

Si vous avez déjà installé l'application, vous verrez même une nouvelle icône d'application lors de l'installation. Après l'installation, cette icône disparaît, mais votre version déjà existante de l'application sera mise à jour. Avec une installation propre, l'icône d'installation disparaîtra et l'icône de l'application installée apparaîtra en place.

Il semble qu'iOS 8 met en cache les identificateurs de bundle et compare les installations demandées avec celles mises en cache. La plupart du temps, vous ne verrez qu'une fenêtre contextuelle demandant l'installation, mais rien ne se passe.

Comme Sean l'a déjà remarqué, cela apparaît avec xCode 6 GM et la version officielle iOS 8. Les appareils qui n'ont jamais installé votre application auparavant n'auront aucun problème pour installer l'application.

Antoine
la source
3
Cela fonctionne sur certains appareils, mais certains autres deveice le syslog montrant toujours l'identifiant du bundle précédent, même si j'ai changé le fichier plist.
temple
En fait, fournir des images est la bonne solution - vérifiez cette réponse stackoverflow.com/a/26283611/276656
mspasov
3
Dans mon cas, changer l'identifiant du bundle fonctionnait sur certains appareils - pas tous. Après avoir changé le chemin vers le plist lui-même, je l'ai résolu.
pawi
1
Où est le .plist à modifier si vous téléchargez l'application depuis Xcode Server?
Collin
1
Cette réponse stackoverflow.com/a/28727958/108040 a mieux fonctionné pour nous puisque vous n'avez pas à changer le .plist
Robin
24

Cela a mieux fonctionné pour moi, pas besoin de toucher votre manifeste ou autre tromperie (parfait pour Xcode Server où le plistest généré automatiquement):

  1. Téléchargez iExplorer ( http://www.macroplant.com/iexplorer/ )
  2. Branchez votre appareil
  3. Supprimez tous les fichiers dans "Médias> Téléchargements"
  4. Redémarrer l'appareil

Cela réinitialise les caches de l'appareil, vous pouvez maintenant installer votre application comme d'habitude.

jlpiedrahita
la source
3
Merci, vous sauvez la vie. J'utilise iBrowse ( ibrowseapp.com ) qui est gratuit de Macroplant
Min Soe
2
Cela a très bien fonctionné pour nous ... n'oubliez pas de redémarrer l'appareil après avoir supprimé le contenu de Media -> Downloads
Robin
merci fait le travail! Mais toujours en pensant que cela doit être fait sur le téléphone de chaque utilisateur!
Ammar Mujeeb
La fonction «Effacer tout le contenu et tous les paramètres» (sous l'application Paramètres) fonctionne-t-elle?
onmyway133
Quel est le contenu du dossier Téléchargements?
HamzaGhazouani
16

J'ai le même problème. Je l'ai reproduit par:

1) Avoir mon application installée lors de la mise à niveau d'iOS 7 vers iOS 8 GM

2) Le supprimer dans iOS 8

3) Essayer de l'installer via itms-services: avec le même nom de bundle

Quand j'ai essayé de changer l'identifiant du bundle dans le serveur plist (pas dans les applications Info.plist), cela a fonctionné (l'application a été téléchargée et aucune icône "shadow" n'est restée). Mais cela ressemble à un bug de la pomme.

Gil Hartman
la source
1
Mais vous devez également changer le nom du bundle dans l'application, n'est-ce pas? J'ai essayé de changer uniquement le fichier plist du serveur et le résultat est le suivant: 18 sept. 09:59:20 XXX-iPhone filecoordinationd [123] <Avertissement>: sandboxing a refusé l'abonnement pour progresser sur la catégorie com.mo2o.XXX (id du bundle com.apple.iaptransportd , 037BE63A-8737-4A4B-9C9D-B8FAF8DC0D40) 18 sept. 09:59:20 XXX-iPhone filecoordinationd [123] <Avertissement>: le sandboxing a refusé l'abonnement pour progresser sur la catégorie com.mo2o.XXX (identifiant du bundle (nul), 0B9D3B2A- 2B5D-4882-8771-61784326E507) et l'application ne s'installe pas
Eva Madrazo
mmm je n'ai pas raison, il enregistre l'avertissement mais aussi il installe l'application.
Eva Madrazo
Cela fonctionne bien, il y a cependant un inconvénient mineur. Pendant l'installation, l'appareil ne sait pas quelle application vous mettez à jour, vous verrez donc une deuxième icône d'application pendant l'installation. Après l'installation, cela est automatiquement corrigé.
Ivo Jansch
4
Il convient de noter que dans cet article bulldozer.io, il est dit "il semble que les appareils sur lesquels un certificat de développeur est installé ne sont pas affectés". Ce que l'on entend par `` certificat de développeur '' (je suppose un profil d'approvisionnement de développement qui `` couvre '' l'application en question) n'est pas clair, mais cela pourrait expliquer les problèmes de reproduction du problème sur différents appareils.
astletron
11

La solution acceptée ne fonctionne plus sur iOS9.

Je crois comprendre qu'Apple a fermé une grave faille de sécurité iOS en empêchant les binaires adhoc de remplacer les applications stockées ou les applications téléchargées depuis l'App Store. Consultez cet article pour le contexte (CVE-2015-3722 / 3725 et CVE-2015-3725):

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

Compte tenu des implications de sécurité, je ne m'attendrais pas à ce que ce comportement change dans les futures versions d'IOS. Les options alternatives semblent être:

  • supprimer la version App Store avant d'installer l'adhoc
  • distribuer l'adhoc en tant que `` nouvelle '' application en modifiant l'identifiant du bundle dans l'application et dans le plist de distribution
  • utiliser TestFlight
Frans
la source
Vous avez raison. Cela fonctionne bien sur les nouvelles installations ou la mise à jour d'une version ad hoc précédente de l'application, mais cela ne fonctionne pas lorsque la version installée a été installée à partir de l'App Store.
charles
Voici un autre indice pour lequel Apple a fait le changement: loopinsight.com/2015/10/05
Frans
Bien que je comprenne la nécessité de fermer la sécurité, cela nous place dans un scénario intéressant où nous ne pouvons pas tester les mises à niveau d'une version à une autre sur la version déployée sans passer par TestFlight. Il semble qu'une application signée par un profil ad-hoc et un certificat pour le même développeur devrait pouvoir être mise à niveau.
lidsinker
@charles , "Cela fonctionne très bien sur les nouvelles installations ou la mise à jour d'une précédente version adhoc de l'application", l'avez-vous testé? parce que nous rencontrons ce problème adhoc de mise à jour adhock dans IOS9 .....
flypig
@flypig Je l'avais essayé sur iOS 9 à l'époque, et cela a fonctionné. Je n'ai pas essayé depuis, désolé.
charles
9

Ce que Gil a dit semble être correct, mais plus précisément, j'ai trouvé que je devais également incrémenter la chaîne de version du bundle dans le server.plist:

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

Cela vous permet au moins d'effectuer une installation OTA.

(Désolé ... J'aurais ajouté des commentaires, mais je suis trop un n00b.)

Cfold
la source
9

Jetez un œil sur cette réponse et cette réponse .

Vous pouvez résoudre ce problème sans aucun piratage, pour iOS8, vous devez inclure dans la assetsclé du .plistfichier manifeste le display-imageetfull-size-image clés . Ils étaient disponibles dans Xcode 5 lors de l'enregistrement d'une archive pour le déploiement en entreprise et add-hoc, mais n'étaient pas obligatoires.

J'ai créé un gist sur github avec le modèle du fichier install-manifet.plist .

alexcristea
la source
7
Je rencontrais en fait ce problème avec ces deux clés incluses.
Sean Danzeiser
ya j'ai changé l'identifiant du bundle et cela a fonctionné. Je n'en suis pas ravi.
Sean Danzeiser
Génial! J'ai également tout déplacé dans un sous-dossier et n'ajuster que le MD5 du fichier ipa.
Felipe FMMobile
3

C'est un bogue trouvé pour la première fois dans iOS8 Beta5. Et cela n'a toujours pas été corrigé par Apple dans les semences GM et la version officielle iOS8.0. Plus de discussions peuvent être trouvées ici

La solution de contournement actuelle étant testée par moi-même:

  • Si vous ne vous souciez pas du contenu de votre appareil: effectuez une restauration propre en mode DFU de l'appareil
  • Si tu veux récupérer tes affaires
    1. Sauvegardez votre appareil iOS dans iTunes avant la restauration (sans application Ad-Hoc / entreprise)
    2. Après avoir restauré proprement votre appareil, installez votre application Ad-Hoc / entreprise
    3. Restaurez votre sauvegarde depuis iTunes
    4. Vous êtes maintenant libre de supprimer ces applications Ad-Hoc / d'entreprise et de les réinstaller.
Xiao
la source
1
Toujours pas corrigé dans 8.1 non plus
Kevin
2
Toujours pas corrigé dans 8.2 ....... Peut-être que nous, 15 personnes dans le monde, créons des applications d'entreprise.
Karl Heinz Brehme Arredondo
3

Problème résolu en changeant l'identifiant du bundle dans plist.

Normalement, après avoir appuyé sur le lien itms, il affichera le bureau qui montre l'installation de l'icône. Cependant, pour mon appareil iOS 8.0, après avoir appuyé sur le lien itms, il ne passera pas à la page d'installation mais l'installation fonctionne déjà derrière.

Tallent Siu
la source
2

C'est extrême, mais si vous ne pouvez pas modifier l'identifiant de votre bundle, ce que je ne pouvais pas, la restauration de votre iPhone via iTunes vers le dernier iOS 8 et la restauration à partir d'une sauvegarde résout le problème.

pho0
la source
Vous ne devriez pas restaurer l'iPhone - juste quelques étapes updraft.beekeeper.io/post/2046721
Sergey Kopanev
1

Le même problème existe sur iOS 10 beta 1.

31 décembre 19:01:32 iphone-6s itunesstored [98]: LoadExternalDownloadManifestOperation: Ignorer le téléchargement du manifeste, déjà avoir bundleID: com. ***************. Ios avec phase: SSDownloadPhaseWaiting

Une chose que je ne comprends pas ici est que la date est le 31 décembre dans le journal de l'appareil XCode, cependant, l'appareil a la date et l'heure correctes configurées.

Mise à jour: Les gars de HockeyApp ont informé Apple de ce problème lors de la WWDC et le correctif devrait venir dans la prochaine graine.

Alex Sorokoletov
la source
1
même problème sur iOS 10
Crossle Song
0

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 poser des problèmes. L'indicateur --sign ne fonctionne plus lors de la construction de 10.10 et de sa suppression, toutes nos applications iOS sont à nouveau installées.

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

James Moore
la source
Cela répond à un problème différent et est lié à la construction, et non à l'installation, comme le demande le PO.
wottle
Je ne suis pas d'accord. Il y a eu un changement de comportement introduit dans b5 qui empêche le chargement des IPA signés. En supposant que l'OP ne contient aucune erreur dans son fichier manifeste, il est pratiquement garanti qu'un IPA signé ne s'installera pas avec exactement l'erreur qu'il a fournie. Puisqu'ils ne mentionnent pas comment ils ont construit leur IPA, je ne peux pas dire avec certitude pourquoi cela échoue. D'un autre côté, la suppression des sigs de nos IPA les a tous réinstallés.
James Moore
Cela peut être vrai, mais si vous regardez l'erreur spécifiée dans la question d'origine: "Ignorer le téléchargement du manifeste, avoir déjà bundleID:", cela est évidemment lié au bogue iOS8 maintenant largement discuté sur les applications d'entreprise et à l'impossibilité d'installer une application qui a été installé avant la mise à niveau vers iOS8, puis la désinstallation après la mise à niveau vers iOS8. Vous pouvez résoudre un problème, mais ce n'est pas le problème rencontré par l'OP.
wottle
0

Assurez-vous d'avoir un accès Internet complet.

J'étais confronté au même problème avec l'installation OTA et IOS8. Parce que je suis derrière un proxy d'entreprise, les solutions ci-dessus n'ont pas fonctionné jusqu'à ce que j'ai défini les paramètres de proxy manuels (non nécessaires dans IOS7) pour résoudre ce problème.

creal
la source
0

Je viens de rencontrer ce problème sur un appareil exécutant 8.1, la mise à niveau de l'appareil vers la 8.3 a résolu le problème. Donc, soit le bogue n'est plus présent dans la version 8.3 ... soit l'acte de mise à niveau a effacé les données en cache de toute façon.

tom01
la source