web-dev-qa-db-fra.com

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

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

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'ai 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

110
Patrick Perini

J'ai également rencontré ce problème avec notre distribution d'applications. Nous avons pu résoudre ce problème en "simulant" l'identifiant de bundle à l'intérieur de la liste .plist à l'aide de la distribution de téléchargement, en conservant le même identifiant que 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 existante de l'application sera mise à jour. Avec une nouvelle installation, l'icône d'installation disparaîtra et l'icône de l'application installée apparaîtra à la place.

Il semble qu'iOS 8 mette en cache les identifiants des ensembles et compare les installations demandées à celles mises en cache. La plupart du temps, vous ne verrez qu'un popup 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 d’iOS 8). Les appareils qui n’ont jamais installé votre application n’auront aucun problème pour l’installer.

90
Antoine

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

  1. Téléchargez iExplorer ( http://www.macroplant.com/iexplorer/ )
  2. Branchez votre appareil
  3. Supprimer tous les fichiers dans "Média> 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.

24
jlpiedrahita

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

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

2) Suppression dans iOS 8

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

Lorsque j'ai essayé de modifier l'identifiant de paquet dans la plist du serveur (pas dans les applications Info.plist), cela a fonctionné (l'application a été téléchargée et il ne reste aucune icône "shadow"). Mais cela ressemble à un bogue Apple.

16
Gil Hartman

La solution acceptée ne fonctionne plus sur iOS9.

D'après ce que j'ai compris, Apple a résolu un grave problème de sécurité iOS en empêchant les fichiers binaires adhoc de remplacer les applications stockées ou les applications téléchargées depuis l'App Store. Voir cet article à l'arrière-plan (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 en matière de sécurité, je ne m'attendrais pas à ce que ce comportement change à l'avenir IOS. Les autres options semblent être:

  • supprimer la version de l'App Store avant d'installer l'adhoc
  • distribuez l'application adhoc en tant que "nouvelle" application en modifiant l'identifiant du bundle à la fois dans l'application et dans le plist de distribution
  • utiliser TestFlight
11
Frans

Jetez un oeil sur cette réponse et cette réponse .

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

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

9
alexcristea

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

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

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

(Désolé ... aurais ajouté aux commentaires, mais je suis trop n00b.)

9
Cfold

Problème résolu en changeant l'identifiant de paquet dans la plist.

Normalement, après avoir cliqué sur le lien itms, le bureau qui affiche l'installation de l'icône s'affiche. Cependant, pour mon appareil iOS 8.0, après avoir cliqué sur le lien itms, il ne sera pas modifié pour la page d'installation, mais l'installation est déjà en retard.

3
Tallent Siu

C'est un bogue trouvé pour la première fois dans iOS8 Beta5. Et il n'était toujours pas corrigé par Apple dans GM version initiale et version officielle iOS8.0. Plus de discussions ont pu être trouvées ici

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

  • Si vous ne vous souciez pas du contenu de votre appareil: effectuez une restauration en mode DFU de l'appareil.
  • Si vous voulez récupérer vos affaires
    1. Sauvegardez votre appareil iOS dans iTunes avant la restauration (sans application Ad-Hoc/Enterprise)
    2. Après avoir restauré votre appareil proprement, installez votre application Ad-Hoc/Enterprise
    3. Restaurez votre sauvegarde depuis iTunes
    4. Vous êtes maintenant libre de supprimer ces applications ad-hoc/d'entreprise et de les réinstaller.
3
Xiao

C'est extrême, mais si vous ne pouvez pas changer l'identifiant de votre bundle, ce que je ne pouvais pas, restaurer le dernier iOS 8 par iPhone via iTunes et le restaurer à partir d'une sauvegarde corrige le problème.

2
pho0

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

31 déc. 19:01:32 itunesstored [98]: LoadExternalDownloadManifestOperation: Ignore le téléchargement du manifeste, dispose déjà de bundleID: com. **************. Ios avec phase: SSDownloadPhaseWaiting

Une chose que je ne comprends pas, c'est que la date est le 31 décembre dans le journal du périphérique XCode. Cependant, la date et l'heure du périphérique ont été configurées correctement.

Mise à jour: Les gars de HockeyApp ont notifié Apple) à propos de ce problème pendant WWDC et le correctif devrait entrer dans la graine suivante.

1
Alex Sorokoletov

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

Je faisais face au même problème avec l'installation de l'OTA et l'IOS8. Étant donné que je suis derrière un proxy d'entreprise, les solutions ci-dessus ne fonctionnaient pas tant que je n'avais pas défini de paramètres de proxy manuels (non requis dans IOS7) pour résoudre ce problème.

0
creal

Je viens de rencontrer ce problème sur un périphérique exécutant la version 8.1, la mise à niveau du périphérique vers la version 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 la mise à jour efface quand même les données en cache.

0
tom01

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=

0
James Moore