Enterprise App Update Distribution unter iOS 8


111

Ich habe eine Unternehmens-App, die ich über eine itmsURL verteile :

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

Unter iOS 7 funktionieren sowohl Downloads als auch Updates einwandfrei. Unter iOS 8 erhalte ich jedoch den Fehler:

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

In meiner Liste habe ich

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

und auf meiner App unter iOS 8 verwende ich Version 0.2.1


1
Welche Version von iOS8 verwenden Sie? Ich habe von Leuten gehört, die solche Probleme mit Beta 5 haben.
Anil Natha

7
Genau das gleiche Problem. iOS 8 GM. Diese Apps lehnen den Download jetzt ab.
Carl Sjogreen

3
Ich verwende das jetzt offiziell veröffentlichte ios8.0 und die Installation wird nicht gestartet. Ich habe mir das Konsulat angesehen und es wird die folgende Meldung angezeigt: "<Warnung>: LoadExternalDownloadManifestOperation: Manifest-Download ignorieren, BundleID bereits haben: MYBUNDLENAME" ... das Gerät wiederherzustellen oder die Bundle-ID zu ändern, reicht aus
user2387149


1
@pcperini Ich denke, die Antworten im anderen Beitrag haben mehr Informationen. Keine Straftat beabsichtigt.
Kristopher Johnson

Antworten:


91

Ich habe dieses Problem auch bei unserer App-Distribution festgestellt. Wir konnten dieses Problem beheben, indem wir die Bundle-ID in der .plist für die Download-Verteilung vortäuschten und dabei unsere ipa-Bundle-ID beibehalten.

Zum Beispiel in Ihrer Liste:

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

Ändern Sie com.mycom.MyApp in com.mycom.MyApp.ios8fix

Die App wird mithilfe eines neuen App-Symbols installiert, das nach der Installation verschwindet.

Wenn Sie die App bereits installiert haben, wird während der Installation sogar ein neues App-Symbol angezeigt. Nach der Installation verschwindet dieses Symbol, aber Ihre bereits vorhandene Version der App wird aktualisiert. Bei einer Neuinstallation verschwindet das Installationssymbol und das Symbol für die installierte Anwendung wird angezeigt.

Es sieht so aus, als würde iOS 8 die Bundle-IDs zwischenspeichern und die angeforderten Installationen mit diesen zwischengespeicherten Installationen vergleichen. In den meisten Fällen wird nur ein Popup angezeigt, in dem Sie nach der Installation gefragt werden, aber es passiert nichts.

Wie Sean bereits bemerkt hat, erscheint dies mit xCode 6 GM und der offiziellen iOS 8-Version. Geräte, die Ihre Anwendung noch nie zuvor installiert haben, können die App problemlos installieren.


3
Es funktioniert auf einigen Geräten, aber auf anderen Geräten zeigt das Syslog immer noch die vorherige Bundle-ID an, selbst wenn ich die Plist-Datei geändert habe.
Tempel

Das Bereitstellen von Bildern ist die richtige Lösung - überprüfen Sie diese Antwort stackoverflow.com/a/26283611/276656
mspasov

3
In meinem Fall funktionierte das Ändern der Bundle-ID auf einigen Geräten - nicht auf allen. Nachdem ich den Weg zur Plist selbst geändert hatte, löste ich ihn für mich.
Pawi

1
Wo kann die .plist bearbeitet werden, wenn Sie die App von Xcode Server herunterladen?
Collin

1
Diese Antwort stackoverflow.com/a/28727958/108040 funktionierte besser für uns, da Sie die .plist nicht ändern müssen
Robin

24

Dies funktionierte besser für mich, ohne dass Sie Ihr Manifest oder andere Tricks berühren müssen (perfekt für Xcode Server, wo das plistautomatisch generiert wird):

  1. Laden Sie iExplorer herunter ( http://www.macroplant.com/iexplorer/ )
  2. Schließen Sie Ihr Gerät an
  3. Löschen Sie alle Dateien unter "Medien> Downloads".
  4. Gerät neustarten

Dadurch werden die Geräte-Caches zurückgesetzt. Jetzt können Sie Ihre App wie gewohnt installieren.


3
Danke, du bist ein Lebensretter. Ich benutze iBrowse ( ibrowseapp.com ), das frei von Macroplant ist
Min Soe

2
Dies funktionierte hervorragend für uns ... vergessen Sie nicht, das Gerät neu zu starten, nachdem Sie den Inhalt von Media -> Downloads
Robin

danke hat den Job gemacht! Aber ich denke immer noch, dass es auf dem Telefon jedes Benutzers gemacht werden muss!
Ammar Mujeeb

Funktioniert "Alle Inhalte und Einstellungen löschen" (unter "Einstellungen")?
onmyway133

Was ist der Inhalt des Downloads-Ordners?
HamzaGhazouani

16

Ich habe das gleiche Problem. Ich habe es reproduziert von:

1) Installation meiner Anwendung während des Upgrades von iOS 7 auf iOS 8 GM

2) Entfernen in iOS 8

3) Versuch, es über itms-services zu installieren: mit demselben Bundle-Namen

Als ich versuchte, die Bundle-ID in der Serverliste zu ändern (nicht in der Info.plist der Anwendung), funktionierte dies (die Anwendung wurde heruntergeladen und es blieb kein "Schatten" -Symbol übrig). Aber es sieht aus wie ein Apfelkäfer.


1
Sie müssen aber auch den Bundle-Namen in der App ändern, nicht wahr? Ich habe versucht, nur die Server-Liste zu ändern, und das Ergebnis ist: 18. September 09:59:20 XXX-iPhone-Dateikoordinationd [123] <Warnung>: Sandboxing hat das Abonnement für den Fortschritt in der Kategorie com.mo2o.XXX verweigert (Bundle-ID com.apple.iaptransportd) , 037BE63A-8737-4A4B-9C9D-B8FAF8DC0D40) 18. September 09:59:20 XXX-iPhone-Dateikoordination 2B5D-4882-8771-61784326E507) und App nicht installiert
Eva Madrazo

mmm Ich habe nicht recht, es protokolliert die Warnung, aber es installiert auch die App.
Eva Madrazo

Dies funktioniert gut, es gibt jedoch einen kleinen Nachteil. Während der Installation weiß das Gerät nicht, welche App Sie aktualisieren. Daher wird während der Installation ein zweites App-Symbol angezeigt. Nach der Installation wird dies jedoch automatisch korrigiert.
Ivo Jansch

4
Erwähnenswert ist, dass in diesem Artikel von bulldozer.io steht: "Es scheint, dass Geräte, auf denen ein Entwicklerzertifikat installiert ist, nicht betroffen sind." Es ist nicht klar, was unter "Entwicklerzertifikat" zu verstehen ist (ich denke, ein Entwicklungsbereitstellungsprofil, das die betreffende App "abdeckt"), aber dies könnte Probleme bei der Reproduktion des Problems auf verschiedenen Geräten erklären.
Astletron

11

Die akzeptierte Lösung funktioniert unter iOS9 nicht mehr.

Meines Wissens nach hat Apple eine ernsthafte Sicherheitslücke für iOS geschlossen, indem verhindert wurde, dass Ad-hoc-Binärdateien Standard-Apps oder Apps ersetzen, die aus dem App Store heruntergeladen wurden. Hintergrundinformationen finden Sie in diesem Artikel (CVE-2015-3722 / 3725 und CVE-2015-3725):

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

Angesichts der Auswirkungen auf die Sicherheit würde ich nicht erwarten, dass sich dieses Verhalten in zukünftigen IOS-Versionen ändert. Alternative Optionen scheinen zu sein:

  • Löschen Sie die App Store-Version, bevor Sie das Ad-hoc installieren
  • Verteilen Sie das Ad-hoc als "neue" App, indem Sie die Bundle-ID sowohl in der App als auch in der Verteilungsliste ändern
  • Verwenden Sie TestFlight

Sieht so aus, als hättest du recht. Es funktioniert einwandfrei bei Neuinstallationen oder beim Aktualisieren einer früheren Ad-hoc-Version der App, funktioniert jedoch nicht, wenn die installierte Version aus dem App Store installiert wurde.
Charles

Hier ist ein weiterer Hinweis, warum Apple die Änderung vorgenommen hat: loopinsight.com/2015/10/05/…
Frans

Ich verstehe zwar die Notwendigkeit, die Sicherheit zu schließen, aber dies bringt uns in ein interessantes Szenario, in dem wir Upgrades von einer Version auf eine andere auf der bereitgestellten Version nicht testen können, ohne zu TestFlight zu wechseln. Es scheint, dass eine App, die von einem Ad-hoc-Profil und einem Zertifikat für denselben Entwickler signiert wurde, aktualisiert werden kann.
Deckelsenker

@charles , "Es funktioniert gut bei Neuinstallationen oder beim Aktualisieren einer früheren Ad-hoc-Version der App", haben Sie es getestet? weil wir auf dieses Adhock-Update-Ad-hoc-Problem in IOS9 stoßen .....
flypig

@flypig Ich hatte es damals unter iOS 9 versucht und es hat funktioniert. Ich habe es seitdem nicht mehr versucht, sorry.
Charles

9

Was Gil sagte, scheint richtig zu sein, aber genauer gesagt, ich musste auch die Zeichenfolge für die Bundle-Version in der server.plist erhöhen:

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

Auf diese Weise können Sie zumindest eine OTA-Installation durchführen.

(Sorry ... Hätte Kommentare hinzugefügt, aber ich bin zu sehr ein n00b.)


9

Schauen Sie sich diese Antwort und diese Antwort an .

Sie können ohne Hacks dieses Problem beheben, für iOS8 Sie in der müssen umfassen assetsSchlüssel des Manifests .plistDatei die display-imageund full-size-imageTasten. Sie waren in Xcode 5 verfügbar, als ein Archiv für die Unternehmens- und Add-hoc-Bereitstellung gespeichert wurde, waren jedoch nicht erforderlich.

Ich habe einen Gist auf Github mit der Vorlage für die Datei install-manifestet.plist erstellt.


7
Ich hatte tatsächlich dieses Problem mit diesen beiden Schlüsseln.
Sean Danzeiser

ya ich habe die Bundle-ID geändert und es hat funktioniert. Nicht begeistert davon.
Sean Danzeiser

Toll! Ich habe auch alles in einen Unterordner verschoben und nur die MD5 der IPA-Datei angepasst.
Felipe FMMobile

3

Dies ist ein Fehler, der erstmals in iOS8 Beta5 gefunden wurde. Und es wurde immer noch nicht von Apple in GM Seed und der offiziellen iOS8.0-Version behoben. Weitere Diskussionen finden Sie hier

Die aktuelle Problemumgehung, die ich selbst getestet habe:

  • Wenn Sie sich nicht um den Inhalt Ihres Geräts kümmern: Führen Sie im DFU-Modus des Geräts eine saubere Wiederherstellung durch
  • Wenn du deine Sachen zurück haben willst
    1. Sichern Sie Ihr iOS-Gerät vor der Wiederherstellung in iTunes (ohne Ad-Hoc / Enterprise-App).
    2. Installieren Sie Ihre Ad-Hoc / Enterprise-App, nachdem Sie Ihr Gerät sauber wiederhergestellt haben
    3. Stellen Sie Ihr Backup von iTunes wieder her
    4. Jetzt können Sie diese Ad-hoc- / Unternehmensanwendungen löschen und neu installieren.

1
Auch in 8.1 immer noch nicht behoben
Kevin

2
Immer noch nicht in 8.2 behoben ....... Vielleicht machen nur wir 15 Personen auf der Welt Unternehmens-Apps.
Karl Heinz Brehme Arredondo

3

Problem gelöst durch Ändern der Bündelkennung in plist.

Normalerweise wird nach dem Tippen auf den itms-Link der Desktop angezeigt, auf dem die Symbolinstallation angezeigt wird. Bei meinem iOS 8.0-Gerät wird jedoch nach dem Tippen auf den itms-Link nicht zur Installationsseite gewechselt, sondern die Installation funktioniert bereits.


2

Dies ist extrem, aber wenn Sie Ihre Bundle-ID nicht ändern können, was ich nicht konnte, wird das Problem durch Wiederherstellen Ihres iPhones über iTunes auf das neueste iOS 8 und Wiederherstellen aus einem Backup behoben.


Sie sollten das iPhone nicht wiederherstellen - nur wenige Schritte updraft.beekeeper.io/post/2046721
Sergey Kopanev

1

Das gleiche Problem besteht unter iOS 10 Beta 1.

31. Dezember 19:01:32 iphone-6s itunesstored [98]: LoadExternalDownloadManifestOperation: Manifest-Download ignorieren, bereits BundleID: com. ***************. IOS mit Phase: SSDownloadPhaseWaiting

Eine Sache, die ich hier nicht verstehe, ist, dass das Datum im XCode-Geräteprotokoll der 31. Dezember ist. Für das Gerät sind jedoch Datum und Uhrzeit korrekt konfiguriert.

Update: Leute von HockeyApp haben Apple während des WWDC über dieses Problem informiert und das Problem sollte im nächsten Seed behoben werden.


1
das gleiche Problem auf iOS 10
Crossle Song

0

Wenn Sie Ihre iOS-Apps mit einem Build-Skript erstellen und zuvor PackageApplication mit dem Flag --sign verwendet haben, kann dies zu Problemen führen. Das Flag --sign funktioniert nicht mehr, wenn Sie auf 10.10 aufbauen und es entfernen. Alle unsere iOS-Apps werden erneut installiert.

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


Dies betrifft ein anderes Problem und bezieht sich auf das Erstellen und nicht das Installieren, wie es das OP verlangt.
Wottle

Ich bin nicht einverstanden. In b5 wurde eine Verhaltensänderung eingeführt, die dazu führt, dass signierte IPAs nicht geladen werden können. Angenommen, das OP enthält keine Fehler in seiner Manifestdatei, kann ein signierter IPA praktisch nicht mit genau dem von ihm angegebenen Fehler installiert werden. Da sie nicht erwähnen, wie sie ihre IPA aufgebaut haben, kann ich nicht sicher sagen, warum sie fehlschlägt. Durch das Entfernen von Sigs aus unseren IPAs wurden sie alle erneut installiert.
James Moore

Das mag wahr sein, aber wenn Sie sich den Fehler ansehen, der in der ursprünglichen Frage angegeben ist: "Manifest-Download ignorieren, bereits bundleID haben:", hängt dies offensichtlich mit dem jetzt viel diskutierten iOS8-Fehler bei Unternehmensanwendungen und der Unfähigkeit zusammen, eine App zu installieren Dies wurde vor dem Upgrade auf iOS8 installiert und nach dem Upgrade auf iOS8 deinstalliert. Möglicherweise sprechen Sie ein Problem an, aber es ist nicht das Problem, das das OP hat.
Wottle

0

Stellen Sie sicher, dass Sie einen vollständigen Internetzugang haben.

Ich hatte das gleiche Problem mit der OTA-Installation und IOS8. Da ich hinter einem Unternehmens-Proxy stehe, haben die oben genannten Lösungen erst funktioniert, als ich manuelle Proxy-Einstellungen festgelegt habe (in IOS7 nicht erforderlich), um dieses Problem zu lösen.


0

Ich habe dieses Problem gerade auf einem Gerät mit 8.1 festgestellt. Durch ein Upgrade des Geräts auf 8.3 wurde das Problem behoben. Entweder ist der Fehler in 8.3 nicht mehr vorhanden ... oder durch das Aktualisieren wurden die zwischengespeicherten Daten ohnehin gelöscht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.