Distribuzione degli aggiornamenti delle app aziendali su iOS 8


111

Ho un'app aziendale che sto distribuendo tramite un itmsURL:

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

Su iOS 7, sia i download che gli aggiornamenti funzionano correttamente. Su iOS 8, tuttavia, ottengo l'errore:

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

Nel mio plist, ho

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

e sulla mia app su iOS 8, sto eseguendo la versione 0.2.1


1
Quale versione di iOS8 stai utilizzando. Ho sentito di persone che hanno problemi come questo con Beta 5.
Anil Natha

7
Esatto stesso problema. iOS 8 GM. Queste app si rifiutano di scaricare ora.
Carl Sjogreen,

3
Sto eseguendo il ios8.0 ora ufficiale rilasciato e l'installazione non si avvia. Ho dato un'occhiata alla console e c'è un messaggio che dice: "<Warning>: LoadExternalDownloadManifestOperation: Ignore manifest download, already have bundleID: MYBUNDLENAME" ... il ripristino del dispositivo o la modifica dell'ID bundle farà il trucco
user2387149


1
@pcperini penso che le risposte nell'altro post abbiano più informazioni. Nessun reato inteso.
Kristopher Johnson,

Risposte:


91

Ho riscontrato questo problema anche con la nostra distribuzione dell'app. Siamo stati in grado di risolvere questo problema "falsificando" l'identificatore del bundle all'interno di .plist utilizzando per la distribuzione del download, mantenendo lo stesso identificatore del bundle ipa.

Ad esempio, nel tuo plist:

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

cambia com.mycom.MyApp in com.mycom.MyApp.ios8fix

L'app verrà installata utilizzando una nuova icona dell'app, che scomparirà dopo l'installazione.

Se hai già un'installazione dell'app, vedrai anche una nuova icona dell'app durante l'installazione. Dopo l'installazione questa icona scompare, ma la versione dell'app già esistente verrà aggiornata. Con un'installazione pulita l'icona di installazione scomparirà e l'icona dell'applicazione installata apparirà al suo posto.

Sembra che iOS 8 memorizzi nella cache gli identificatori del bundle e confronti le installazioni richieste con quelle memorizzate nella cache. La maggior parte delle volte vedrai solo un popup che richiede l'installazione, ma non succede nulla.

Come già notato da Sean, questo appare con xCode 6 GM e la versione ufficiale di iOS 8. I dispositivi che non hanno mai installato la tua applicazione prima non avranno problemi a installare l'app.


3
Funziona su alcuni dispositivi, ma alcuni altri sviluppano il syslog che mostra ancora l'id del bundle precedente, anche se ho cambiato il file plist.
tempio

Fornendo in realtà le immagini è la soluzione giusta - controllare questa risposta stackoverflow.com/a/26283611/276656
mspasov

3
Nel mio caso la modifica dell'identificatore del pacchetto ha funzionato su alcuni dispositivi, non su tutti. Dopo aver cambiato il percorso al plist stesso, l'ho risolto per me.
pawi

1
Dov'è il .plist da modificare se stai scaricando l'app da Xcode Server?
Collin

1
Questa risposta stackoverflow.com/a/28727958/108040 ha funzionato meglio per noi poiché non è necessario modificare il .plist
Robin

24

Questo ha funzionato meglio per me, non è necessario toccare il tuo manifest o altri trucchi (perfetto per Xcode Server in cui plistviene generato automaticamente):

  1. Scarica iExplorer ( http://www.macroplant.com/iexplorer/ )
  2. Collega il tuo dispositivo
  3. Elimina tutti i file in "Media> Download"
  4. Riavvia il dispositivo

Questo ripristina le cache del dispositivo, ora puoi installare la tua app come al solito.


3
Grazie, sei un salvavita. Uso iBrowse ( ibrowseapp.com ) che è gratuito da Macroplant
Min Soe

2
Questo ha funzionato alla grande per noi ... non dimenticare di riavviare il dispositivo dopo aver eliminato i contenuti di Media -> Download
Robin

grazie ha fatto il lavoro! Ma ancora pensando che deve essere fatto sul telefono di ogni utente!
Ammar Mujeeb

"Cancella tutto il contenuto e le impostazioni" (nell'app Impostazioni) funziona?
onmyway133

Qual è il contenuto della cartella Download?
HamzaGhazouani

16

Sto avendo lo stesso problema. L'ho riprodotto da:

1) Avere la mia applicazione installata durante l'aggiornamento da iOS 7 a iOS 8 GM

2) Rimozione in iOS 8

3) Cercando di installarlo tramite itms-services: con lo stesso nome del bundle

Quando ho provato a cambiare l'identificatore del bundle nel server plist (non nelle applicazioni Info.plist), ha funzionato (l'applicazione è stata scaricata e non è rimasta alcuna icona "ombra"). Ma sembra un insetto di mele.


1
Ma devi anche cambiare il nome del pacchetto nell'app, non è vero? Ho provato solo a cambiare il server plist e il risultato è: Sep 18 09:59:20 XXX-iPhone filecoordinationd [123] <Avviso>: sandboxing negato l'iscrizione per avanzare nella categoria com.mo2o.XXX (bundle id com.apple.iaptransportd , 037BE63A-8737-4A4B-9C9D-B8FAF8DC0D40) 18 settembre 09:59:20 Coordinamento file XXX-iPhoned [123] <Avviso>: sandboxing negato l'iscrizione per avanzare nella categoria com.mo2o.XXX (ID bundle (null), 0B9D3B2A- 2B5D-4882-8771-61784326E507) e l'app non si installa
Eva Madrazo

mmm non ho ragione, registra l'avviso ma installa anche l'app.
Eva Madrazo

Funziona bene, tuttavia c'è un piccolo inconveniente. Durante l'installazione il dispositivo non sa quale app stai aggiornando, quindi vedrai una seconda icona dell'app durante l'installazione. Dopo l'installazione, questo viene corretto automaticamente.
Ivo Jansch

4
Vale la pena notare che in quell'articolo di bulldozer.io si dice "sembra che i dispositivi su cui è installato un certificato per sviluppatori non siano interessati". Non è chiaro cosa si intenda per "certificato sviluppatore" (immagino un profilo di provisioning di sviluppo che "copra" l'app in questione), ma questo potrebbe spiegare problemi che riproducono il problema su diversi dispositivi.
astletron

11

La soluzione accettata non funziona più su iOS9.

La mia comprensione è che Apple ha chiuso una grave falla nella sicurezza di iOS impedendo ai binari ad hoc di sostituire le app stock o le app scaricate dall'App Store. Vedi questo articolo per lo sfondo (CVE-2015-3722 / 3725 e CVE-2015-3725):

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

Considerate le implicazioni sulla sicurezza, non mi aspetto che questo comportamento cambi nelle future versioni di IOS. Le opzioni alternative sembrano essere:

  • eliminare la versione dell'App Store prima di installare l'adhoc
  • distribuire l'adhoc come "nuova" app modificando l'id del bundle sia nell'app che nel plist di distribuzione
  • utilizzare TestFlight

Sembra che tu abbia ragione. Funziona bene su nuove installazioni o sull'aggiornamento di una precedente versione ad hoc dell'app, ma non funziona quando la versione installata è stata installata dall'App Store.
charles

Ecco un altro suggerimento per cui Apple ha apportato la modifica: loopinsight.com/2015/10/05/…
Frans

Sebbene comprenda la necessità di chiudere la sicurezza, questo ci pone in uno scenario interessante in cui non possiamo testare gli aggiornamenti da una versione all'altra sulla versione distribuita senza passare a TestFlight. Sembra che un'app firmata da un profilo e certificato ad-hoc per lo stesso sviluppatore dovrebbe poter essere aggiornata.
Dissipatore

@charles , "Funziona bene con nuove installazioni o con l'aggiornamento di una precedente versione ad hoc dell'app", l'hai testato? perché riscontriamo questo problema ad hoc con l'aggiornamento adhock in IOS9 .....
flypig

@flypig L'avevo provato su iOS 9 all'epoca e funzionava. Da allora non ho più provato, mi dispiace.
charles

9

Ciò che Gil ha detto sembra essere corretto, ma più specificamente, ho scoperto che avevo anche bisogno di incrementare la stringa della versione del bundle nel server.plist:

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

Questo almeno ti consente di eseguire un'installazione OTA.

(Scusa ... Avrei aggiunto ai commenti, ma sono troppo un n00b.)


9

Dai un'occhiata a questa risposta e a questa risposta .

Puoi risolvere questo problema senza alcun hack, per iOS8 devi includere nella assetschiave del .plistfile manifest il file display-imageefull-size-image chiavi . Erano disponibili in Xcode 5 durante il salvataggio di un archivio per l'implementazione aziendale e add-hoc, ma non erano necessari.

Ho creato una sintesi su GitHub con il modello per il file install-manifet.plist .


7
In realtà stavo riscontrando questo problema con entrambe le chiavi incluse.
Sean Danzeiser

ya ho cambiato l'identificatore del bundle e ha funzionato. Non ne sono entusiasta.
Sean Danzeiser

Grande! Inoltre ho spostato tutto in una sottocartella e aggiusto solo l'MD5 del file ipa.
Felipe FMMobile

3

Questo è un bug trovato per la prima volta in iOS8 Beta5. E non è stato ancora risolto da Apple nel seme GM e nella versione ufficiale iOS8.0. Ulteriori discussioni potrebbero essere trovate qui

L'attuale soluzione alternativa testata da me stesso:

  • Se non ti interessa il contenuto del tuo dispositivo: esegui un ripristino pulito in modalità DFU del dispositivo
  • Se vuoi indietro le tue cose
    1. Esegui il backup del tuo dispositivo iOS in iTunes prima del ripristino (senza app Ad-Hoc / aziendale)
    2. Dopo aver ripristinato il tuo dispositivo in modo pulito, installa la tua app Ad-Hoc / aziendale
    3. Ripristina il backup da iTunes
    4. Ora sei libero di eliminare quelle app Ad-Hoc / aziendali e reinstallarle.

1
Ancora non risolto nemmeno in 8.1
Kevin

2
Ancora non risolto in 8.2 ....... Forse solo noi 15 persone nel mondo facciamo app aziendali.
Karl Heinz Brehme Arredondo

3

Problema risolto modificando l'identificatore del bundle in plist.

Normalmente, dopo aver toccato il collegamento itms, verrà visualizzato il desktop che mostra l'icona di installazione. Tuttavia, per il mio dispositivo iOS 8.0, dopo aver toccato il collegamento itms, non passerà alla pagina di installazione ma l'installazione sta già funzionando.


2

Questo è estremo ma se non puoi cambiare l'identificatore del tuo pacchetto, cosa che non ho potuto fare, il ripristino del tuo iPhone tramite iTunes all'ultimo iOS 8 e il ripristino da un backup risolve il problema.


Non dovresti ripristinare iPhone - solo pochi passaggi updraft.beekeeper.io/post/2046721
Sergey Kopanev

1

Lo stesso problema esiste su iOS 10 beta 1.

31 dic 19:01:32 iphone-6s itunesstored [98]: LoadExternalDownloadManifestOperation: ignora il download del manifest, ho già bundleID: com. ***************. Ios con fase: SSDownloadPhaseWaiting

Una cosa che non capisco qui è che la data è il 31 dicembre nel registro del dispositivo XCode, tuttavia, il dispositivo ha la data e l'ora configurate corrette.

Aggiornamento: i ragazzi di HockeyApp hanno notificato ad Apple questo problema durante il WWDC e la correzione dovrebbe arrivare nel seme successivo.


1
stesso problema su iOS 10
Crossle Song

0

Se crei le tue app iOS con uno script di compilazione e in precedenza utilizzavi PackageApplication con il flag --sign, ciò potrebbe causare problemi. Il flag --sign non funziona più quando si costruisce su 10.10 e rimuovendolo, tutte le nostre app iOS vengono nuovamente installate.

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


Questo sta affrontando un problema diverso ed è correlato alla creazione e non all'installazione, come richiesto dall'OP.
wottle

Non sono d'accordo. È stata introdotta una modifica del comportamento in b5 che impedisce il caricamento degli IPA firmati. Supponendo che l'OP non abbia errori nel file manifest, è virtualmente garantito che un IPA firmato non si installa esattamente con l'errore fornito. Dal momento che non menzionano come hanno costruito il loro IPA, non posso dire con certezza perché sta fallendo. D'altra parte la rimozione dei sigle dai nostri IPA li ha fatti reinstallare tutti.
James Moore

Potrebbe essere vero, ma se guardi l'errore specificato nella domanda originale: "Ignore manifest download, already have bundleID:", è ovviamente correlato al bug iOS8 ormai ampiamente discusso sulle app aziendali e all'impossibilità di installare un'app installato prima dell'aggiornamento a iOS8, quindi disinstallato dopo l'aggiornamento a iOS8. Potresti affrontare un problema, ma non è il problema che sta avendo l'OP.
wottle

0

Assicurati di avere un accesso completo a Internet.

Stavo affrontando lo stesso problema con l'installazione OTA e IOS8. Poiché sono dietro un proxy aziendale, le soluzioni sopra non hanno funzionato fino a quando non ho impostato le impostazioni proxy manuali (non necessarie in IOS7) per risolvere il problema.


0

Ho appena riscontrato questo problema su un dispositivo con 8.1, l'aggiornamento del dispositivo a 8.3 ha risolto il problema. Quindi o il bug non è più presente in 8.3 ... o l'aggiornamento ha comunque cancellato i dati memorizzati nella cache.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.