Distribusi Pembaruan Aplikasi Perusahaan di iOS 8

111

Saya memiliki aplikasi perusahaan yang saya distribusikan melalui itmsURL:

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

Di iOS 7, unduhan dan pembaruan berfungsi dengan baik. Namun, di iOS 8, saya mendapatkan error:

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

Dalam plist saya, saya punya

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

dan di aplikasi saya di iOS 8, saya menjalankan versi 0.2.1

Patrick Perini
sumber
1
Versi iOS8 mana yang Anda jalankan. Saya pernah mendengar ada orang yang mengalami masalah seperti ini dengan Beta 5.
Anil Natha
7
Masalah yang sama persis. iOS 8 GM. Aplikasi ini menolak untuk diunduh sekarang.
Carl Sjogreen
3
Saya menjalankan ios8.0 yang sekarang resmi dirilis dan penginstalan tidak akan dimulai. Saya melihat konsul dan ada pesan yang mengatakan: "<Warning>: LoadExternalDownloadManifestOperation: Abaikan unduhan manifes, sudah memiliki bundleID: MYBUNDLENAME" ... memulihkan perangkat atau mengubah id bundel akan berhasil
user2387149
kemungkinan duplikat iOS 8 - Tidak Dapat Menginstal Aplikasi Perusahaan
Kristopher Johnson
1
@pcperini Saya pikir jawaban di posting lain memiliki informasi lebih lanjut. Tidak ada pelanggaran yang dimaksudkan.
Kristopher Johnson

Jawaban:

91

Saya juga mengalami masalah ini dengan distribusi aplikasi kami. Kami dapat memperbaiki masalah ini dengan 'memalsukan' pengenal bundel di dalam .plist yang digunakan untuk distribusi unduhan, menjaga pengenal bundel ipa kami tetap sama.

Misalnya, di plist Anda:

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

ubah com.mycom.MyApp menjadi com.mycom.MyApp.ios8fix

Aplikasi akan dipasang menggunakan ikon aplikasi baru, yang akan hilang setelah pemasangan.

Jika Anda sudah menginstal aplikasi, Anda bahkan akan melihat ikon aplikasi baru saat menginstal. Setelah penginstalan, ikon ini menghilang, tetapi versi aplikasi Anda yang sudah ada akan diperbarui. Dengan penginstalan yang bersih, ikon penginstalan akan hilang dan ikon aplikasi yang diinstal akan muncul di tempatnya.

Sepertinya iOS 8 sedang menyimpan pengenal bundel dan membandingkan pemasangan yang diminta dengan yang disimpan dalam cache ini. Sebagian besar waktu Anda hanya akan melihat munculan yang meminta untuk menginstal, tetapi tidak ada yang terjadi.

Seperti yang sudah diperhatikan Sean, ini muncul dengan xCode 6 GM dan versi resmi iOS 8. Perangkat yang tidak pernah menginstal aplikasi Anda sebelumnya tidak akan mengalami masalah untuk menginstal aplikasi.

Antoine
sumber
3
Ini berfungsi pada beberapa perangkat, tetapi beberapa perangkat lain syslog masih menampilkan id bundel sebelumnya, bahkan saya mengubah file plist.
Bait suci
Sebenarnya menyediakan gambar adalah solusi yang tepat - periksa jawaban ini stackoverflow.com/a/26283611/276656
mspasov
3
Dalam kasus saya, mengubah pengenal bundel berfungsi pada beberapa perangkat - tidak semua. Setelah mengubah jalur ke plist itu sendiri memecahkannya untuk saya.
pawi
1
Di mana .plist yang akan diedit jika Anda mengunduh aplikasi dari Xcode Server?
Collin
1
Jawaban stackoverflow.com/a/28727958/108040 ini bekerja lebih baik untuk kami karena Anda tidak perlu mengubah .plist
Robin
24

Ini bekerja lebih baik untuk saya, tidak perlu menyentuh manifes Anda atau tipuan lainnya (cocok untuk Server Xcode yang plistdibuat secara otomatis):

  1. Unduh iExplorer ( http://www.macroplant.com/iexplorer/ )
  2. Pasang perangkat Anda
  3. Hapus semua file di "Media> Download"
  4. Mulai ulang perangkat

Ini mengatur ulang cache perangkat, sekarang Anda dapat menginstal aplikasi Anda seperti biasa.

jlpiedrahita
sumber
3
Terima kasih, Anda adalah penyelamat. Saya menggunakan iBrowse ( ibrowseapp.com ) yang bebas dari Makroplant
Min Soe
2
Ini berfungsi dengan baik bagi kami ... jangan lupa untuk memulai ulang perangkat setelah menghapus konten Media -> Unduhan
Robin
terima kasih melakukan pekerjaan! Tapi tetap berpikir bahwa itu perlu dilakukan di ponsel masing-masing pengguna!
Ammar Mujeeb
Apakah "Hapus Semua Konten dan Pengaturan" (di bawah aplikasi Pengaturan) berfungsi?
onmyway133
Apa isi folder Download?
HamzaGhazouani
16

Saya mengalami masalah yang sama. Saya memperbanyaknya dengan:

1) Menginstal aplikasi saya saat meningkatkan dari iOS 7 ke iOS 8 GM

2) Menghapusnya di iOS 8

3) Mencoba menginstalnya melalui itms-services: dengan nama bundel yang sama

Ketika saya mencoba untuk mengubah bundle-identifier di server plist (bukan di aplikasi Info.plist), itu berhasil (aplikasi telah diunduh, tidak ada ikon "bayangan" yang tersisa). Tapi sepertinya serangga apel.

Gil Hartman
sumber
1
Tapi Anda juga harus mengubah nama bundel di aplikasi, bukan? Saya telah mencoba hanya mengubah daftar server dan hasilnya adalah: Sep 18 09:59:20 XXX-iPhone koordinasi file [123] <Peringatan>: sandboxing ditolak berlangganan untuk kemajuan pada kategori com.mo2o.XXX (bundel id com.apple.iaptransportd . 2B5D-4882-8771-61784326E507) dan aplikasi tidak terpasang
Eva Madrazo
mmm saya tidak benar, itu mencatat peringatan tetapi juga menginstal aplikasi.
Eva Madrazo
Ini berfungsi dengan baik, namun ada kekurangan kecil. Selama penginstalan, perangkat tidak tahu aplikasi mana yang Anda perbarui, jadi Anda akan melihat ikon aplikasi kedua selama penginstalan. Setelah menginstal ini secara otomatis diperbaiki.
Ivo Jansch
4
Perlu dicatat bahwa dalam artikel bulldozer.io itu dikatakan "tampaknya perangkat yang memiliki sertifikat pengembang terpasang tidak terpengaruh". Tidak jelas apa yang dimaksud dengan 'sertifikat pengembang' (saya kira profil penyediaan pengembangan yang 'mencakup' aplikasi yang dipermasalahkan), tetapi hal ini dapat menjelaskan masalah saat mereproduksi masalah pada perangkat yang berbeda.
astletron
11

Solusi yang diterima tidak lagi berfungsi di iOS9.

Pemahaman saya adalah bahwa Apple telah menutup lubang keamanan iOS yang serius dengan mencegah adhoc binari mengganti aplikasi stok atau aplikasi yang diunduh dari App Store. Lihat artikel ini untuk latar belakang (CVE-2015-3722 / 3725 dan CVE-2015-3725):

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

Mengambil implikasi keamanan, saya tidak mengharapkan perilaku ini berubah di versi IOS mendatang. Pilihan alternatif tampaknya adalah:

  • hapus versi App Store sebelum menginstal adhoc
  • mendistribusikan adhoc sebagai aplikasi 'baru' dengan mengubah id paket di aplikasi dan plist distribusi
  • gunakan TestFlight
Frans
sumber
Sepertinya Anda benar. Ini berfungsi dengan baik pada penginstalan baru atau memperbarui versi adhoc aplikasi sebelumnya, tetapi tidak berfungsi saat versi yang diinstal diinstal dari App Store.
Charles tanggal
Berikut petunjuk lain mengapa Apple melakukan perubahan: loopinsight.com/2015/10/05/…
Frans
Meskipun saya memahami kebutuhan untuk menutup keamanan, ini menempatkan kami dalam skenario yang menarik di mana kami tidak dapat menguji peningkatan dari satu versi ke versi lain pada versi yang diterapkan tanpa pergi ke TestFlight. Tampaknya aplikasi yang ditandatangani oleh profil ad-hoc dan sertifikat untuk pengembang yang sama seharusnya dapat ditingkatkan.
lidsinker
@charles, "Ini berfungsi dengan baik pada penginstalan baru atau memperbarui versi adhoc aplikasi sebelumnya", sudahkah Anda mengujinya? karena kami menemukan masalah adhock pembaruan adhoc ini di IOS9 .....
flypig
@flypig Saya telah mencobanya di iOS 9 pada saat itu, dan berhasil. Saya belum mencoba sejak itu, maaf.
Charles
9

Apa yang dikatakan Gil tampaknya benar, tetapi lebih khusus lagi, saya menemukan bahwa saya juga perlu menaikkan string versi bundel di server.plist:

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

Ini setidaknya memungkinkan Anda untuk menyelesaikan penginstalan OTA.

(Maaf ... Akan menambahkan ke komentar, tapi saya terlalu banyak n00b.)

Cfold
sumber
9

Lihatlah jawaban ini dan jawaban ini .

Anda dapat memperbaiki masalah ini tanpa peretasan, untuk iOS8 Anda harus memasukkan assetskunci .plistfile manifes display-imagedan full-size-imagekunci. Mereka tersedia di Xcode 5 saat menyimpan arsip untuk perusahaan dan penerapan add-hoc, tetapi tidak diperlukan.

Saya telah membuat inti dari github dengan template untuk file install-manifet.plist .

alexcristea.dll
sumber
7
Saya sebenarnya mengalami masalah ini dengan kedua kunci tersebut disertakan.
Sean Danzeiser
ya saya mengubah pengenal bundel dan berhasil. Tidak senang tentang itu.
Sean Danzeiser
Bagus! Saya juga memindahkan semuanya ke subfolder dan hanya menyesuaikan MD5 file ipa.
Felipe FMMobile
3

Ini adalah bug yang pertama kali ditemukan di iOS8 Beta5. Dan itu masih belum diperbaiki oleh Apple di GM seed dan versi resmi iOS8.0. Diskusi lebih lanjut dapat ditemukan di sini

Solusi saat ini sedang diuji sendiri:

  • Jika Anda tidak peduli dengan konten di perangkat Anda: lakukan pemulihan bersih dalam mode DFU perangkat
  • Jika Anda ingin barang Anda kembali
    1. Cadangkan Perangkat iOS Anda di iTunes sebelum memulihkan (tanpa Ad-Hoc / aplikasi perusahaan)
    2. Setelah memulihkan perangkat Anda dengan bersih, instal aplikasi Ad-Hoc / perusahaan Anda
    3. Pulihkan cadangan Anda dari iTunes
    4. Sekarang Anda bebas untuk menghapus aplikasi Ad-Hoc / perusahaan dan menginstalnya kembali.
Xiao
sumber
1
Masih belum diperbaiki di 8.1 juga
Kevin
2
Masih belum diperbaiki di 8.2 ....... Mungkin hanya kami 15 orang di dunia yang membuat aplikasi perusahaan.
Karl Heinz Brehme Arredondo
3

Masalah diselesaikan dengan mengubah pengenal bundel di plist.

Biasanya, setelah mengetuk tautan itms, itu akan menunjukkan desktop yang menunjukkan instalasi ikon. Namun, untuk perangkat iOS 8.0 saya, setelah mengetuk tautan itms, itu tidak akan berubah ke halaman instalasi tetapi penginstalan sudah berfungsi di belakang.

Tallent Siu
sumber
2

Ini ekstrem tetapi jika Anda tidak dapat mengubah pengenal bundel Anda, yang saya tidak bisa, memulihkan iPhone Anda melalui iTunes ke iOS 8 terbaru dan memulihkan dari cadangan memperbaiki masalah.

pho0
sumber
Anda tidak boleh memulihkan iPhone - hanya beberapa langkah updraft.beekeeper.io/post/2046721
Sergey Kopanev
1

Masalah yang sama ada di iOS 10 beta 1.

31 Des 19:01:32 iphone-6s itunesstored [98]: LoadExternalDownloadManifestOperation: Abaikan unduhan manifes, sudah memiliki bundleID: com. ***************. Ios dengan fase: SSDownloadPhaseWaiting

Satu hal yang saya tidak mengerti di sini adalah bahwa tanggal 31 Desember di log perangkat XCode, bagaimanapun, perangkat memiliki tanggal dan waktu yang benar dikonfigurasi.

Pembaruan: Orang-orang dari HockeyApp memberi tahu Apple tentang masalah ini selama WWDC dan perbaikan harus datang di seed berikutnya.

Alex Sorokoletov
sumber
1
masalah yang sama di iOS 10
Crossle Song
0

Jika Anda membangun aplikasi iOS dengan skrip build dan sebelumnya menggunakan PackageApplication dengan tanda --sign, hal itu mungkin menyebabkan masalah. Bendera --sign tidak berfungsi lagi saat membangun di 10.10 dan menghapusnya membuat semua aplikasi iOS kami menginstal lagi.

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

James Moore
sumber
Itu menangani masalah yang berbeda dan terkait dengan membangun, dan tidak menginstal, seperti yang diminta OP.
wottle
Saya tidak setuju. Ada perubahan perilaku yang diperkenalkan di b5 yang menyebabkan IPA yang ditandatangani gagal dimuat. Dengan asumsi OP tidak memiliki kesalahan dalam file manifes mereka, maka IPA yang ditandatangani secara virtual dijamin gagal untuk menginstal persis dengan kesalahan yang mereka berikan. Karena mereka tidak menyebutkan bagaimana mereka membangun IPA mereka, saya tidak dapat mengatakan dengan pasti mengapa itu gagal. Di sisi lain, menghapus tanda dari IPA kami membuat semuanya menginstal lagi.
James Moore
Itu mungkin benar, tetapi jika Anda melihat kesalahan yang ditentukan dalam pertanyaan asli: "Abaikan unduhan manifes, sudah memiliki bundleID:", ini jelas terkait dengan bug iOS8 yang sekarang banyak dibahas pada aplikasi perusahaan dan ketidakmampuan untuk memasang aplikasi yang diinstal sebelum meningkatkan ke iOS8, kemudian mencopot pemasangannya setelah meningkatkan ke iOS8. Anda mungkin menangani masalah, tetapi itu bukan masalah yang dialami OP.
wottle
0

Pastikan Anda memiliki akses internet penuh.

Saya menghadapi masalah yang sama dengan instalasi OTA dan IOS8. Karena saya berada di belakang proxy perusahaan, solusi di atas tidak berfungsi sampai saya menetapkan pengaturan proxy manual (tidak diperlukan di IOS7) untuk menyelesaikan masalah itu.

creal
sumber
0

Saya baru saja mengalami masalah ini pada perangkat yang menjalankan 8.1, memutakhirkan perangkat ke 8.3 telah menyelesaikan masalah. Jadi baik bug tersebut tidak lagi ada di 8.3 .... atau tindakan pemutakhiran tetap menghapus data yang di-cache.

tom01
sumber