Güncellemeden sonra iOS eski başlatma ekranını ve uygulama simgesini tutma


173

Yakın zamanda lansman resimlerini ve uygulama simgelerini değiştirdiğim bir uygulamam var, tüm eski varlıkları projenin her yerinden kaldırdım. Sadece Xcode'da oluşturarak uygulamayı eski sürümden yeni sürüme yükselttiğimde, her şey yolunda. Ancak, uygulamamın eski sürümü yüklüyse TestFlight'tan yükseltin, uygulamayı her başlattığımda yeni başlatma görüntüsünü göstermeden önce kısa bir süre eski başlatma görüntüsü görünür. Benzer şekilde, uygulamayı kapattığımda, yeni uygulamaya dönmeden önce eski uygulama simgesi kısa bir süre yanıp söner.

Uygulamayı iExplorer kullanarak açtım ve /Library/Caches/Shapshotsdizine kaydedilen eski başlatma ekranının bir görüntüsünün olduğunu fark ettim (nasıl veya neden oraya geldiğini bilmiyorum). İExplorer ile manuel olarak sildiğimde görünmüyor. Ancak, kod kullanarak kaldırmaya çalıştığınızdaNSFileManager yöntemleri , bu dizindeki dosyaları silmek yasak olduğunu söyleyerek hata alıyorum.

Bunu daha önce deneyimleyen ve herhangi bir tavsiyede bulunan var mı?


3
Aynı sorun ve başlatma ekranlarında yeni başlatma ekranı asla göstermiyor, önceki sürümün önbelleğe alınmış görüntüsünü kullanıyor.
Christophe Fondacci

Yanıtlar:


327

Bunu yaparak başlangıç ​​görüntüsü değişikliklerini test etmek için sıçrama tahtası önbelleğini güvenilir bir şekilde temizleyebildim:

  1. Uygulamanızı cihazdan silin
  2. Cihazı kapatın
  3. Cihazı çalıştırın, uygulamayı yükleyin ve başlatın.

Görüntü her seferinde düzgün güncellenir. Yazık Gitmesi için cihazı kapatmam gerekiyor - ama en azından bu şekilde ilerleme kaydedebildim. Umarım bu birine yardımcı olur.

Simülatörde, simülatörün yeniden başlatılması çalışmalıdır.


19
Bu benim için işe yarayan tek çözüm. Çok teşekkür ederim!
Marcin Kapusta

Teşekkürler Kahraman !! Bir cazibe gibi çalıştı.
Ravi

5
Emülatör için de çalışır.
Alexey Podlasov

1
Bu aynı zamanda TestFlight için bir düzeltme mi? Uygulamanın TestFlight'tan güncellenmesi, başlatılan görüntüleri de önbelleğe alır. Bunun test sürümünden farklı olarak uygulama sürümünde olmayacağından emin misiniz?
hasan

1
Oto ayna komedisini bana hatırlatıyor. Ama harika çalışıyor. Teşekkür ederim!
ssowri1

49

Bu önbellekler, uygulama değiştirmeyi hızlı yapmak için Springboard tarafından kullanılır. Bu, üretim kullanıcılarınızı etkileyecek bir sorun değildir ve teorik olarak Springboard uygulamanızın anlık görüntüsünü almaya karar verdiğinde ortadan kaybolmalıdır.

Olduğu söyleniyor, bu çözebileceğiniz bir sorun değil. Bu, Apple'ın kodundaki bir hata değil.

GÜNCELLEME: Cihazın yeniden başlatılmasını gerektirmeyen bir çalışma var gibi görünüyor.

Bu ikinci lansmandan sonra yürürlüğe girecek!

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

Burada nasıl çalıştığının tam bir açıklaması: https://rambo.codes/ios/quick-tip/2019/12/09/clearing-your-apps-launch-screen-cache-on-ios.html


7
Lütfen "Bu, üretim kullanıcılarınızı etkileyecek bir sorun değil" ifadenizi onaylayan dokümanlara bağlantı verebilir misiniz? Aynı problemim var, eğer bu sadece dev ise sorun değil ama söylediklerini açıkça ifade eden resmi belgeler olmadan şansım olmayacak.
Christophe Fondacci

6
Bazı insanlar için App Store güncellemesi için de bunu alıyorum :(.
Ajumal

15
Ne yazık ki bu sorunun üretim kullanıcılarını bile etkilediğini onaylayabilirim (bu yüzden uygulamayı App Store'dan yükselttikten sonra).
Eugenio

Evet, üretim yapılarını / App Store yapılarını etkiler.
Jonny

Bunun için herhangi bir kaynak var mı?
Daniel Springer

27

Simülatör için Reset Contents and Settings...


Bu bir soru değil. Mesele şu ki, yeni simgeler veya resimlerle yeni bir uygulama dağıtılırken, hepsi aynı şekilde yenilenmez ve bazıları kaldırılırken ekranda tutulur.
Stephane Paquet

18

@InkGolem

Bu, üretim kullanıcılarınızı etkileyecek bir sorun değil

doğru.

Başlatma Ekranı, SplashScreen ve Uygulama Simgemi değiştirdiğimde bu sorunla karşı karşıyaydım. Her yöntemi denedim ama işe yaramadı. Son olarak, uygulamamı yeni yayınladım ve geliştirme için kullanmadığım cihazla uygulamamı App Store'dan indirdim . SplashScreen ve Uygulama Simgesi normal şekilde çalışıyor !!!


1
Uygulama mağazasında zaten bir uygulamanız varsa ve kullanıcı uygulamayı yeni Başlatma Ekranı ile güncellerse ne olur?
rhcpfan

Uygulama mağazası indirmelerinde zaten bir uygulamam var ve yeni Başlatma Ekranı ile bir güncelleme yayınlıyorum . Uygulamamı bıraktıktan sonra "Bu, üretim kullanıcılarınızı etkileyecek bir sorun değil" nin gerçek olduğunu doğrulamak için 10'dan fazla cihazla test ediyorum ve kullanıcıdan şu ana kadar herhangi bir şikayet almıyorum başlangıç ​​ekranı.
chinnawatp

7
Bu sorun Appstore derlemesinde benim için de uğraşıyor ve @Brian Trzupek ipuçları işe yaradı.
Ajumal

3
Onaylandı, bu App Store'dan canlı sürümlerde gerçekleşir. Bu cevabın dil ile ilgili bazı sorunları var; Onlar sorun oluşturur ya da değil, ama benim ampirik deneyim diyor üretimini etkiler demek olmadığını söyleyemem yapar .
Jonny

2
Aslında üretim kullanıcılarına oluyor !! Görüntülenen açılış ekranı eskidir. Telefonu yeniden başlatmak sorunu çözdü. Umarım insanlar yeni sıçramayı yeniden başlatmadan izleyen saatlerde görürler.
Valerio

13

Bu sorunu gerçekten düzeltmek istiyorsanız geçici çözüm buldum. Apple, görüntü dosyası adına göre dizin oluşturan başlatma ekranının görüntülerini önbelleğe almak için bazı mekanizmalara sahiptir.

Başlat ekranındaki herhangi bir görüntüyü değiştirdiğinizde ve bir sonraki çalıştırmada bu değişiklikleri hemen görmek istediğinizde. lütfen değiştirdiğiniz yeni resim adını kullanarak ve film şeridi veya xib'deki yeni resim dosyasına bağlantı verin.

Tekrar çalıştırın, yeni değişikliğin göründüğünü göreceksiniz.


1
Uygulamayı silmek istemedim, bu yüzden bunu denedim. Bu artı cihazımı yeniden başlatmak benim için çalıştı.
Murray Sagal

Bu benim için işe yaramadı. Deviti yeniden başlatmak da işe yaramadı ... Şimdi pes ediyorum.
Lensflare

Benim için çalışmadı. Hatta imageView'ı kaldırdım ve yeni görüntüyle yeni bir tane oluşturdum ve hala işe yaramadı.
Rickard Elimää

Benim için işe yaramadı. Eski bir görüntüyü yüklemiyordum (bir görüntü yerine hala arka plan rengi sunuldu) ve yeni başlatma ekranı görünmeden önce bir süre daha sunuldu.
Michal Cichon

13

Bu benim için çalıştı: http://arsenkin.com/launch_screen_image_cache.html

Yine, yukarıda bahsettiğim iplik sayesinde bu sorunu çözmenin bir yolunu buldum - yeninizin eskisi ile aynı ada sahip olması durumunda yeni resminizi daha öncekinden farklı olarak adlandırın ve * .xcassets klasörünü proje dizinine ekleyin ve UIImageView içinde referans alın. Ve bu kadar. Kulağa aptalca kolay geliyor ama oh ne kadar öfke yaşadım.


3
Buradaki anahtar , bu görüntüleri varlık kataloğunun dışında tutmaktır. Teşekkürler!
Michal Cichon

3
Bu çözüm, üretim kullanıcınızın iyi kullanıcı arayüzüne önem veriyorsanız ve eski ile yeni görüntü arasındaki bu çirkin geçişten kaçınmak istiyorsanız gerçekten yardımcı olur.
Michal Cichon

3
sonunda, gerçekten işe yarayan bir çözüm! Buradaki anahtar görüntüleri varlıklar klasöründen çıkarmaktır.
Elad

1
Uygulamayı yeniden başlatmadan veya silmeden mükemmel çalışır.
Soufian Hossam

Tuhaf. Ancak varlık kataloğundan çıkardığım arka plan görüntüsü bazen yüklenmiyor ve siyah arka planı alıyorum. Şimdi tekrar hata ayıklamam gerekiyor, ancak ne yazık ki nasıl çoğaltılacağımı bilmiyorum.
Michal Cichon

10

Uygulamanızı kaldırın, telefonunuzu yeniden başlatın ve uygulamanızı tekrar kurun ... Bu aslında benim durumumda düzeltildi.


5

Aynı sorunla da karşılaştım. Bunun nedeni, simülatör / iOS aygıtının uygulamayı ilk başlattığınızda başlatma görüntüsünü önbelleğe almasıdır. Brian Trzupek'in cevabına bazı değişiklikler ekledim :

  1. Görüntü kümesini Xcode varlıklarından silin (ör. Launch_image)
  2. Yeni bir görüntü kümesi ekleyin ve buna görüntü ekleyin.
  3. İOS Cihazını kapatın ve açın. (Simülatör için İçeriği ve Ayarları Sıfırla).
  4. Xcode derleme klasörünü temizleme ( command+ option+ shift+ tuşlarına basınK ).
  5. Uygulamayı cihazdan / simülatörden silin (varsa).
  6. Tekrar koş.

5

Benim için ne işe yaradı:

  • LaunchScreen'in Sahne ve Görünüm Denetleyicisini silme ve yeni bir tane oluşturma ( Öznitelik Denetçisinde "Başlangıç ​​Görünümü Denetleyici" olarak ayarladığınızdan emin olun ).

Ne yaptım değil iş için beni:

  • Uygulamayı silme
  • İPhone, Mac veya Xcode'u yeniden başlatma
  • Türetilmiş Verileri Silme
  • Cihazın kapsayıcının silinmesi
  • Temizlik
  • Burning 3 Steve Jobs Voodoo bebekleri

Not:

Bazen silme (simülatör) de gereklidir


4
İkna olmadım. Onaylamak için Steve Jobs voodoo bebeklerinin kaynak konumlarına ihtiyacım olacak.
Chris Brandsma

3

Cihazınızı bağlayın, Xcode> Pencere> Cihazlar> Cihazınıza gidin, şimdi yüklü uygulamalarda, uygulamanızı seçin, kapsayıcıyı sağ tıklayın ve indirin, oluşturulan dosyaya gidin, sağ tıklayın, Paket içeriğini göster, AppData, Kütüphane, Önbellekler, ve dosyaları silin. Şimdi Xcode> Pencere> Cihazlar> Cihazınız> uygulamanıza gidin ve kapları değiştirmek için sağ tıklayın.


3

Dürüst olmak gerekirse, bunun güncellenip güncellenmeyeceğinden emin olmadan canlı yayınlanma riskini almadım.

Yani, xcassets kullandığınızı varsayarsak, basit bir çözüm:

  1. Eski görüntü kümesini sil
  2. Farklı bir ada sahip bir tane oluşturun ve açılış ekranı görüntülerinizi ekleyin
  3. Film şeridinizi bu 'yeni' resim kümesi referansını kullanacak şekilde güncelleyin

Kesinlikle güncellenecek! (Cihazda yüklü uygulama ile bile test ettim). Cihazın önbelleğini temizlemeye gerek yok.


3
  1. Uygulamanızı cihazdan silin
  2. Cihazı kapatın
  3. Cihazı aç
  4. Uygulamayı yükleyin ve başlatın.

1

Tamam, sorunu çözdüm. Uygulamamın önceki sürümünde, XIB Başlangıç ​​Ekranı kullanıyorduk. Bu yeni sürümün geliştirilmesinde bir yerde, xib silindi ve sadece statik başlatma görüntüleri ile değiştirildi.

Çözüm, bir Başlatma Ekranı XIB kullanmaktır. Bir başlatma ekranı xib'i ilk kez kullandığım an, anlık görüntüler dizininde saklanan dosyanın xib'in anlık görüntüsü ile değiştirildiğini fark ettim.


2
Hayır, bir Başlatma Ekranı XIB kullanıyorum ve güncellenmiyor. Sanırım Başlat Ekranı> Statik görüntü> Başlat Ekranı'ndan geçiş yaparak bu sorunu çözdünüz. XCode'da başlatma ekranını değiştirmek ve çalıştırmak hala iPhone'daki eski başlatma ekranını gösterir. Görüntü cihazda önbelleğe alınır.
Başlangıç

Farklı bir adla bir başlatma ekranını yeniden oluşturmak sorunu çözmedi, hala eski olanı görüyor. Tek "umut", iOS'un her uygulama güncellemesinde önbelleğini yeniden oluşturması, ancak bununla ilgili herhangi bir belge bulamıyorum
Christophe Fondacci

1

Xcode 10 / iOS 12

Yukarıda belirtilen her şeyi denedikten sonra, görüntü görüntüsünü LaunchScreen'den silmek ve yenisiyle değiştirmek zorunda kaldım.


1

Bu aptalca gelse de bu sorunu çözmek için bulduğum en hızlı yol:

  1. LaunchScreen.xibBaşlatma ekranı dosyanızın üzerine veya üzerine sağ tıklayın ve Remove fileardından seçimini yapın Remove to trash. Bu, dosyanın tüm referanslarını ve geçmiş güncellemelerini projenizden kaldıracaktır.

  2. Çöp kutunuza gidin ve dosyayı sürükleyip xCode projenize (içinde yourProjectName) bırakın .

  3. Temizleyin ve yeniden oluşturun.


1

Başlatma ekranı önbelleğini temizlemek için bu kod parçasını kullanın:

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
    }
}

Kullanımı:

UIApplication.shared.clearLaunchScreenCache()

0

Bu sorun da vardı. Toplam bir acemi olarak ben saf olarak LaunchScreen.storyboard LaunchScreen.xib değiştirin. Çalışma başarısız oldu (duh), bu yüzden geri .storyboard sadece başka bir şey berbat değil test etmek için uygulamayı yeniden koştu - ve eski ekran ilk görünmedi. Ne yaparsam yapayım, eski önbelleği temizlemiş olmalı.


0

Aynı sorun vardı ama sadece fırlatma ekranı film şeridinde kullanılan görüntü ile. Görüntüyü varlık kataloğundan 'adını uygulama paketine değiştirerek taşımak (örneğin, varlık kataloğundaki eski görüntü kümesine launch_logo, uygulama paketindeki görüntüye launchscreen_logo.png adı verilir) sorunu çözdük.


0

Sanırım bunlar durumlara bağlı. Hata ayıklama veya test sırasında meydana geldiğinde, başlatma ekranındaki görüntüyü silmeye çalışır. Veya uygulamalarınızı kaldırdıktan sonra başlatmayı yeniden başlatın.

Ancak arşivden sonra bile gider, sonra sıfırlama ve temizleme ile çözülmez.


0

Benim durumumda App Ayarından -> Genel - resim açıklamasını buraya girin> Uygulama Simgeleri ve Lansman Resimleri -> Uygulama Simgeleri Kaynağı'ndan AppIcon Kaynağı seçmedim


0

AppDelegate'te deneyin

    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

Benim İçin Çözüm Çalışması

  1. Uygulamanızı cihazdan silin
  2. Cihazı kapat
  3. Cihazı aç
  4. Klasörü temizle
  5. Yine uygulamayı oluşturmak ve yüklemek ve başlatmak.

    Zevk almak


0

Tüm bu adımları uyguladığınızdan emin olun

  1. Derleme ayarında ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME anahtarını arayın ve tüm uygulamadaki varlık değerlerini arayın ve kaldırın.
  2. ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME dosyasını Build ayarından silin.
  3. Yeni Başlat ekranı oluştur Xcode -> Dosya -> Yeni -> Dosya -> Başlat Ekranı
  4. Uygulama ana hedefine gidin -> Genel -> Uygulama Simgeleri ve Resimleri Başlat -> Başlat Ekran Dosyası -> Yeni Başlat Ekranı Dosyasını Seçin.
  5. Sadece eski Başlatma ekranını değiştiriyorsanız, yeni varlıkları farklı adlarla adlandırmayı deneyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.