iOS Menjaga layar peluncuran lama dan ikon aplikasi setelah pembaruan


173

Saya memiliki aplikasi di mana saya baru saja mengganti gambar peluncuran dan ikon aplikasi, saya menghapus semua aset lama dari mana-mana dalam proyek ini. Ketika saya memutakhirkan aplikasi dari versi lama ke versi baru hanya dengan membangun Xcode, semuanya baik-baik saja. Namun, jika saya menginstal versi lama aplikasi saya kemudian memutakhirkannya dari TestFlight, setiap kali saya mematikan aplikasi kemudian restart itu gambar peluncuran lama sebentar muncul sebelum menampilkan gambar peluncuran baru. Demikian pula ketika saya kemudian menutup aplikasi, ikon aplikasi lama berkedip sebentar sebelum kembali ke yang baru.

Saya membuka Aplikasi menggunakan iExplorer dan memperhatikan bahwa ada gambar layar peluncuran lama yang disimpan dalam /Library/Caches/Shapshotsdirektori (saya tidak tahu bagaimana atau mengapa sampai di sana). Ketika saya menghapusnya secara manual melalui iExplorer, itu berhenti muncul. Namun, ketika saya mencoba untuk menghapusnya dengan menggunakan NSFileManagermetode kode , saya mendapatkan kesalahan mengatakan saya dilarang menghapus file di direktori ini.

Adakah yang pernah mengalami ini sebelumnya dan punya saran?


3
Masalah yang sama, dan dengan layar peluncuran, layar peluncuran baru tidak pernah muncul, menggunakan gambar cache dari versi sebelumnya.
Christophe Fondacci

Jawaban:


327

Saya telah berhasil mendapatkan cache loncatan dihapus untuk menguji perubahan gambar peluncuran dengan melakukan ini:

  1. Hapus aplikasi Anda dari perangkat
  2. Matikan perangkat
  3. Nyalakan perangkat, instal, dan luncurkan aplikasi.

Gambar diperbarui dengan benar setiap kali. Sayang saya harus mematikan perangkat untuk membuatnya pergi - tetapi setidaknya saya telah dapat membuat kemajuan dengan cara ini. Saya harap ini membantu seseorang.

Dalam hal simulator, hanya me-restart simulator harus bekerja.


19
Ini adalah satu-satunya solusi yang berhasil untuk saya. Terima kasih banyak!
Marcin Kapusta

Pahlawan terima kasih !! Bekerja seperti pesona.
Ravi

5
Bekerja untuk emulator juga.
Alexey Podlasov

1
Apakah ini juga perbaikan untuk TestFlight? memperbarui aplikasi dari TestFlight juga membuat cache gambar peluncuran. apakah Anda yakin ini tidak akan terjadi pada versi aplikasi tidak seperti testflight?
hasan

1
Ini mengingatkan komedi cermin otomatis kepada saya. Tapi itu bekerja dengan luar biasa. Terima kasih!
ssowri1

49

Tembolok ini digunakan oleh Springboard untuk membuat peralihan aplikasi dengan cepat. Ini bukan masalah yang akan memengaruhi pengguna produksi Anda dan harus secara teori hilang saat Springboard memutuskan untuk mengambil snapshot aplikasi Anda.

Yang sedang berkata, ini bukan masalah yang bisa Anda perbaiki. Ini adalah bug dalam kode Apple, bukan milik Anda.

UPDATE: Tampaknya ada pekerjaan di sekitar yang tidak perlu me-restart perangkat.

Ini akan berlaku setelah peluncuran kedua!

do {
   try FileManager.default.removeItem(atPath: NSHomeDirectory()+"/Library/SplashBoard")
} catch {
   print("Failed to delete launch screen cache: \(error)")
}

Penjelasan lengkap tentang cara kerjanya di sini: https://rambo.codes/ios/quick-tip/2019/12/09/clearing-your-apps-launch-screen-cache-on-ios.html


7
Bisakah Anda menautkan ke dokumentasi yang akan mengkonfirmasi pernyataan Anda "Ini bukan masalah yang akan mempengaruhi pengguna produksi Anda"? Saya memiliki masalah yang sama persis, saya baik-baik saja jika ini hanya dev tetapi saya tidak akan mengambil kesempatan tanpa dokumentasi resmi yang dengan jelas menyatakan apa yang Anda katakan.
Christophe Fondacci

6
Bagi sebagian orang saya mendapatkan ini untuk pembaruan App Store juga :(.
Ajumal

15
Sayangnya saya dapat mengkonfirmasi bahwa masalah ini berdampak pada pengguna produksi (jadi setelah memutakhirkan aplikasi dari App Store).
Eugenio

Ya itu memengaruhi build produksi / build App Store.
Jonny

Ada sumber untuk ini?
Daniel Springer

27

Untuk simulator saja Reset Contents and Settings...


Ini bukan sebuah pertanyaan. Intinya adalah bahwa ketika menempatkan aplikasi baru dengan ikon atau gambar baru, mereka tidak semua di-refresh dengan cara yang sama dan beberapa disimpan di layar saat mereka telah dihapus.
Stephane Paquet

18

@InkGolem

Ini bukan masalah yang akan mempengaruhi pengguna produksi Anda

adalah benar.

Saya menghadapi masalah ini ketika saya mengubah Layar Peluncuran, SplashScreen, dan Ikon Aplikasi saya. Saya mencoba setiap metode, tetapi tidak berhasil. Akhirnya, saya baru saja menerbitkan aplikasi dan mengunduh aplikasi dari App store dengan perangkat yang tidak saya gunakan untuk pengembangan . SplashScreen dan Ikon Aplikasi berfungsi seperti biasa !!!


1
Adakah yang tahu apa yang terjadi jika Anda sudah memiliki aplikasi di appstore dan pengguna hanya memperbarui aplikasi dengan Layar Peluncuran yang baru?
rhcpfan

Saya sudah memiliki aplikasi di unduhan appstore , dan saya merilis pembaruan dengan Layar Peluncuran baru. Setelah merilis aplikasi saya, saya menguji dengan lebih dari 10 perangkat (tidak digunakan untuk pengembangan) untuk memverifikasi bahwa "Ini bukan masalah yang akan mempengaruhi pengguna produksi Anda" adalah nyata, dan saya tidak mendapatkan keluhan sejauh ini dari pengguna tentang splashscreen.
chinnawatp

7
Masalah ini sangat menyenangkan di Appstore build juga untuk saya, dan kiat-kiat @Brian Trzupek berhasil.
Ajumal

3
Dikonfirmasi, ini terjadi pada build langsung dari App Store. Jawaban ini memiliki beberapa masalah dengan bahasa; Saya tidak bisa mengatakan jika mereka berarti masalah mempengaruhi produksi membangun atau tidak, tapi pengalaman empiris saya mengatakan itu tidak .
Jonny

2
Ini sebenarnya terjadi pada pengguna produksi !! Layar splash yang ditampilkan adalah yang lama. Reboot telepon untuk memperbaikinya. Semoga orang akan melihat splash baru di jam-jam berikutnya tanpa me-reboot.
Valerio

13

Saya menemukan solusi bagaimana jika Anda benar-benar ingin memperbaiki masalah ini. Apple memiliki beberapa mekanisme untuk menyimpan gambar dari layar peluncuran yang diindeks oleh nama file gambar.

Ketika Anda mengubah gambar apa pun di layar peluncuran dan Anda ingin melihat perubahan itu di jalankan selanjutnya segera. silakan gunakan nama gambar baru gambar mana yang Anda ubah dan tautkan ke file gambar baru di storyboard atau xib.

Jalankan lagi, Anda akan melihat perubahan baru muncul.


1
Saya tidak ingin menghapus aplikasi jadi saya mencoba yang ini. Ini plus restart perangkat saya bekerja untuk saya.
Murray Sagal

Ini tidak berhasil untuk saya. Memulai ulang pembagian juga tidak berhasil ... Saya menyerah sekarang.
Lensflare

Tidak bekerja untuk saya. Saya bahkan menghapus imageView dan membuat yang baru dengan gambar baru, dan itu masih tidak berhasil.
Rickard Elimää

Itu tidak berhasil untuk saya. Saya mendapatkan gambar lama yang tidak dimuat (warna latar belakang disajikan bukan gambar) dan masih disajikan untuk sepersekian detik sebelum layar peluncuran baru muncul.
Michal Cichon

13

Ini berfungsi untuk saya: http://arsenkin.com/launch_screen_image_cache.html

Sekali lagi, berkat utas yang telah saya referensikan di atas, saya menemukan cara untuk menyelesaikan masalah ini - beri nama gambar baru Anda berbeda dari sebelumnya, seandainya yang baru Anda memiliki nama yang sama dengan yang lama dan letakkan di luar * .xcassets folder ke direktori proyek dan referensi di UIImageView Anda. Dan itu saja. Kedengarannya gampang gampang, tapi oh, betapa marahnya aku.


3
The kunci di sini adalah untuk menjaga citra mereka keluar dari katalog aset. Terima kasih!
Michal Cichon

3
Solusi ini sangat membantu jika Anda peduli dengan UX yang baik dari pengguna produksi Anda dan ingin menghindari transisi jelek antara yang lama dan yang baru.
Michal Cichon

3
akhirnya, Sebuah solusi yang benar-benar berfungsi! Kuncinya di sini adalah untuk mengeluarkan gambar dari folder aset.
Elad

1
Berfungsi sempurna tanpa memulai ulang atau menghapus aplikasi.
Soufian Hossam

Aneh. Tapi gambar latar belakang saya pindah dari katalog aset kadang-kadang tidak memuat dan saya mendapatkan latar belakang hitam. Sekarang saya perlu men-debug lagi, tetapi saya tidak tahu bagaimana cara mereproduksi sayangnya.
Michal Cichon

10

Copot pemasangan aplikasi Anda, restart ponsel Anda dan instal kembali aplikasi Anda ... Ini benar-benar diperbaiki dalam kasus saya.


5

Saya juga menghadapi masalah yang sama. Itu terjadi karena perangkat simulator / iOS cache gambar peluncuran ketika Anda pertama kali meluncurkan aplikasi. Saya menambahkan beberapa modifikasi pada jawaban Brian Trzupek :

  1. Hapus set gambar dari aset Xcode (mis. Launch_image)
  2. Tambahkan set gambar baru dan tambahkan gambar ke sana.
  3. Matikan dan nyalakan Perangkat iOS. (Reset Konten dan Pengaturan untuk simulator).
  4. Bersihkan folder build Xcode (Tekan command+ option+ shift+ K).
  5. Hapus aplikasi dari perangkat / simulator (jika tersedia).
  6. Berlari lagi.

5

Apa yang berhasil untuk saya:

  • Menghapus Scene dan View Controller LaunchScreen dan membuat yang baru ( pastikan Anda menetapkannya sebagai "Initial View Controller" di Attributes Inspector ).

Apa yang tidak berhasil untuk saya:

  • Menghapus aplikasi
  • Mulai ulang iPhone, Mac, atau Xcode
  • Menghapus Data yang Diperoleh
  • Menghapus wadah perangkat
  • Pembersihan
  • Membakar 3 boneka Steve Jobs Voodoo

catatan:

Kadang-kadang menghapus (simulator) juga diperlukan


4
Saya tidak yakin. Saya akan membutuhkan lokasi sumber boneka voodoo Steve Jobs untuk mengonfirmasi.
Chris Brandsma

3

Cukup sambungkan perangkat Anda, buka Xcode> Jendela> Perangkat> Perangkat Anda, sekarang di aplikasi yang diinstal, pilih aplikasi Anda, klik kanan dan unduh wadah, buka file yang dihasilkan, klik kanan, Tampilkan konten paket, AppData, Library, Cache, dan hapus file. Sekarang pergi ke Xcode> Window> Perangkat> Perangkat Anda> aplikasi Anda dan klik kanan untuk mengganti wadah.


3

Jujur, saya tidak mengambil risiko untuk ditayangkan tanpa yakin apakah ini akan diperbarui atau tidak.

Jadi, dengan asumsi Anda menggunakan xcassets, solusi sederhana adalah:

  1. Hapus set gambar lama
  2. Buat ulang satu dengan nama yang berbeda dan tambahkan gambar layar splash Anda
  3. Perbarui storyboard Anda untuk menggunakan referensi set gambar 'baru' ini

Itu pasti akan diperbarui! (Saya bahkan menguji dengan aplikasi yang sudah diinstal pada perangkat). Tidak perlu membersihkan cache perangkat atau lebih.


3
  1. Hapus aplikasi Anda dari perangkat
  2. Matikan perangkat
  3. Nyalakan perangkat
  4. Instal dan luncurkan aplikasi.

1

Ok, jadi saya mencari tahu masalahnya. Dalam versi aplikasi saya sebelumnya, kami menggunakan Launch Screen XIB. Di suatu tempat dalam pengembangan versi baru ini, xib telah dihapus dan diganti hanya dengan gambar peluncuran statis.

Solusinya adalah dengan menggunakan Layar Peluncuran XIB. Saya perhatikan bahwa saat saya menggunakan xib layar peluncuran untuk pertama kalinya, file yang disimpan dalam direktori snapshots diganti dengan snapshot xib.


2
Tidak, saya menggunakan Layar Peluncuran XIB dan tidak diperbarui. Saya kira Anda mengatasi masalah dengan beralih dari Layar Peluncuran> Gambar Statis> Layar Peluncuran. Memodifikasi layar peluncuran di XCode dan menjalankannya masih menunjukkan layar peluncuran lama di iPhone. Gambar di-cache di perangkat. Saya kira jika saya mengubah nama layar peluncuran itu akan melakukan trik
Christophe Fondacci

Membuat ulang layar peluncuran dengan nama yang berbeda tidak menyelesaikan masalah, masih melihat yang lama. Satu-satunya "harapan" adalah bahwa iOS membuat ulang cache di setiap pembaruan aplikasi, tetapi saya tidak dapat menemukan dokumentasi apa pun tentang ini
Christophe Fondacci

1

Xcode 10 / iOS 12

Setelah mencoba semua hal yang disebutkan di atas, saya harus menghapus imageview dari LaunchScreen dan menggantinya dengan yang baru.


1

Ini adalah cara tercepat yang saya temukan untuk menyelesaikan masalah ini meskipun kedengarannya bodoh:

  1. Klik kanan pada LaunchScreen.xibatau pada file layar peluncuran Anda dan pilih Remove filekemudian pilih Remove to trash. Ini akan menghapus semua referensi file dan pembaruan sebelumnya dari proyek Anda.

  2. Pergilah ke tempat sampah Anda dan seret dan jatuhkan file kembali ke proyek xCode Anda (di dalam yourProjectName).

  3. Bersihkan dan bangun kembali.


1

Gunakan kode ini untuk membersihkan cache layar peluncuran:

import UIKit

public extension UIApplication {
    func clearLaunchScreenCache() {
        #if DEBUG
        do {
            let launchScreenPath = "\(NSHomeDirectory())/Library/SplashBoard"
            try FileManager.default.removeItem(atPath: launchScreenPath)
        } catch {
            print("Failed to delete launch screen cache - \(error)")
        }
        #endif
    }
}

Pemakaian:

UIApplication.shared.clearLaunchScreenCache()

0

Punya masalah ini juga. Menjadi novis total, saya secara naif mengubah LaunchScreen.storyboard menjadi LaunchScreen.xib. Prosesnya gagal (ya), jadi saya mengubahnya kembali ke .storyboard menjalankan kembali aplikasi hanya untuk menguji saya tidak mengacaukan hal lain - dan layar lama tidak muncul terlebih dahulu. Jadi apa pun yang saya lakukan, itu pasti menghapus cache lama.


0

Punya masalah yang sama tetapi hanya dengan gambar yang digunakan dalam storyboard launchscreen. Memindahkan gambar dari katalog aset mengubah namanya menjadi bundel aplikasi (misalnya, kumpulan gambar lama dalam katalog aset disebut launch_logo, dan gambar dalam bundel aplikasi disebut launchscreen_logo.png) memecahkan masalah bagi kami.


0

Saya kira ini tergantung pada situasi. Ketika itu terjadi saat debug atau pengujian, berfungsi menghapus gambar di layar peluncuran. Atau mencopot pemasangan aplikasi Anda, lalu mulai kembali peluncuran.

Tapi itu berjalan bahkan setelah arsip, maka itu tidak menyelesaikan dengan reset dan bersih.


0

Dalam kasus saya, saya belum memilih Sumber AppIcon Dari Pengaturan Aplikasi -> Umum - masukkan deskripsi gambar di sini> Ikon Aplikasi dan Luncurkan Gambar -> Sumber Ikon Aplikasi


0

Cobalah di AppDelegate

    if #available(iOS 13.0, *) {
        do {
            try FileManager.default.removeItem(atPath: NSHomeDirectory()+"/Library/SplashBoard")
        } catch {
            print("Failed to delete launch screen cache: \(error)")
        }
    } else {
        print("ios is min")
    }

0

Solusi Berfungsi Untukku

  1. Hapus aplikasi Anda dari perangkat
  2. Matikan perangkat
  3. Hidupkan perangkat
  4. bersihkan Bangun Folder
  5. Sekali lagi membangun dan menginstal dan meluncurkan aplikasi.

    Nikmati


0

Pastikan Anda melakukan semua langkah ini

  1. Telusuri kunci ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME dalam pengaturan bangunan dan cari nilai asetnya di seluruh aplikasi lalu hapus.
  2. Hapus ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME dari pengaturan Bangun.
  3. Buat layar Peluncuran Baru Xcode -> File -> Baru -> File -> Layar Peluncuran
  4. Target utama Aplikasi Goto -> Umum -> Ikon Aplikasi dan Luncurkan Gambar -> Luncurkan File Layar -> Pilih File Layar Luncurkan Baru.
  5. Jika Anda hanya mengubah layar Luncurkan lama, coba beri nama aset baru dengan nama yang berbeda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.