iOS 업데이트 후 이전 시작 화면 및 앱 아이콘 유지


173

최근에 시작 이미지와 앱 아이콘을 바꾼 앱이 있는데 프로젝트의 모든 곳에서 모든 오래된 자산을 제거했습니다. Xcode로 빌드하여 이전 버전에서 새 버전으로 앱을 업그레이드하면 모든 것이 정상입니다. 그러나 이전 버전의 앱을 설치 한 다음 TestFlight에서 업그레이드하면 앱을 종료 한 다음 다시 시작할 때마다 이전 시작 이미지가 잠깐 나타나서 새 시작 이미지가 표시됩니다. 마찬가지로 앱을 닫을 때 새 앱으로 다시 전환하기 전에 이전 앱 아이콘이 잠시 깜박입니다.

iExplorer를 사용하여 앱을 열고 /Library/Caches/Shapshots디렉토리에 저장된 이전 시작 화면의 이미지가 있음을 알았습니다 (어떻게 또는 왜 거기 있는지 알 수 없음). iExplorer를 통해 수동으로 삭제하면 표시가 중지됩니다. 그러나 NSFileManager메소드를 사용하여 코드로 제거하려고하면 이 디렉토리의 파일 삭제가 금지되어 있다는 오류가 발생합니다.

누구든지 전에 이것을 경험하고 조언이 있습니까?


3
같은 문제가 있으며 새 시작 화면에 표시되지 않는 시작 화면에서는 이전 버전의 캐시 된 이미지를 사용하고 있습니다.
Christophe Fondacci

답변:


327

다음을 수행하여 시작 이미지 변경을 테스트하기 위해 스프링 보드 캐시를 확실하게 지울 수 있습니다.

  1. 기기에서 앱 삭제
  2. 장치 전원 끄기
  3. 장치의 전원을 켜고 앱을 설치하고 시작하십시오.

이미지는 매번 올바르게 업데이트됩니다. 부끄러운 나는 장치의 전원을 꺼야하지만 최소한 나는 이런 식으로 발전 할 수 있었다. 나는 이것이 누군가를 돕기를 바랍니다.

시뮬레이터의 경우 시뮬레이터를 다시 시작하면 작동합니다.


19
이것은 나를 위해 일한 유일한 솔루션입니다. 대단히 감사합니다!
Marcin Kapusta

감사합니다 영웅! 매력처럼 일했다.
Ravi

5
에뮬레이터에서도 작동합니다.
Alexey Podlasov

1
이것도 TestFlight의 수정입니까? TestFlight에서 앱을 업데이트하면 시작 이미지도 캐시됩니다. testflight와 달리 앱 버전에서는 이것이 발생하지 않습니까?
hasan

1
나에게 자동 거울 코미디를 생각 나게한다. 그러나 그것은 훌륭하게 작동합니다. 감사합니다!
ssowri1

49

이 캐시는 Springboard에서 앱 전환 속도를 높이기 위해 사용됩니다. 이것은 프로덕션 사용자에게 영향을 미치는 문제가 아니며 다음에 Springboard가 앱 스냅 샷을 결정할 때 이론 상으로는 사라져야합니다.

즉, 이것은 당신이 고칠 수있는 문제가 아닙니다. 이것은 귀하의 코드가 아닌 Apple 코드의 버그입니다.

업데이트 : 장치를 다시 시작할 필요가없는 해결 방법이 있습니다.

이것은 두 번째 출시 후에 적용됩니다!

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

작동 방식에 대한 전체 설명 : https://rambo.codes/ios/quick-tip/2019/12/09/clearing-your-apps-launch-screen-cache-on-ios.html


7
"제품 사용자에게 영향을 줄 수있는 문제가 아닙니다"라는 내용의 문서를 링크 할 수 있습니까? 나는 똑같은 문제가 있습니다. 개발자라면 괜찮습니다.하지만 당신이 말한 것을 분명히 나타내는 공식 문서가 없으면 기회를 얻지 못할 것입니다.
Christophe Fondacci

6
어떤 사람들은 App Store 업데이트를 위해 이것을 얻고 있습니다 :(.
Ajumal

15
불행히도이 문제는 프로덕션 사용자에게도 영향을 미친다는 것을 확인할 수 있습니다 (App Store에서 앱을 업그레이드 한 후).
Eugenio

예, 프로덕션 빌드 / App Store 빌드에 영향을줍니다.
Jonny

이것에 대한 소스가 있습니까?
Daniel Springer

27

시뮬레이터 만 Reset Contents and Settings...


이것은 질문이 아닙니다. 요점은 새로운 아이콘이나 이미지가 포함 된 새 앱을 배포 할 때 모두 같은 방식으로 새로 고쳐지지 않으며 일부는 제거 된 상태로 계속 표시됩니다.
Stephane Paquet

18

@InkGolem

프로덕션 사용자에게 영향을 미치는 문제는 아닙니다.

사실이다.

시작 화면, SplashScreen 및 앱 아이콘을 변경했을 때이 문제가 발생했습니다. 모든 방법을 시도했지만 작동하지 않았습니다. 마지막으로 방금 내 앱을 게시 하고 개발에 사용하지 않은 장치로 App store에서 내 응용 프로그램을 다운로드했습니다 . SplashScreen 및 앱 아이콘이 정상적으로 작동합니다 !!!


1
이미 앱 스토어에 앱이 있고 사용자가 새로운 시작 화면으로 애플리케이션을 업데이트하면 어떻게됩니까?
rhcpfan 2019

앱 스토어 다운로드 에 이미 앱이 있으며 새로운 시작 화면으로 업데이트를 릴리스합니다. 내 앱을 출시 한 후 10 개 이상의 장치 (개발에 사용하지 않음)로 테스트하여 "이것은 프로덕션 사용자에게 영향을 미치는 문제가 아닙니다"가 실제인지 확인하고 지금까지 사용자로부터 불만을 얻지 못합니다. 스플래시 스크린.
chinnawatp

7
이 문제는 나에게도 Appstore 빌드에서 중단되고 @Brian Trzupek 팁이 효과가있었습니다.
Ajumal September

3
확인 된 것은 App Store의 라이브 빌드에서 발생합니다. 이 답변에는 언어에 문제가 있습니다. 문제가 프로덕션 빌드에 영향을 미치는지 여부를 알 수는 없지만 경험적 경험에 의하면 그렇지 않습니다 .
Jonny

2
실제로 프로덕션 사용자에게 발생합니다 !! 스플래시 화면이 표시됩니다. 전화를 재부팅하면 문제가 해결되었습니다. 사람들은 재부팅없이 다음 시간 안에 새로운 스플래시를 보게 될 것입니다.
Valerio

13

이 문제를 정말로 해결하려면 해결 방법을 찾았습니다. Apple은 이미지 파일 이름으로 색인을 생성하는 시작 화면의 이미지를 캐시하는 메커니즘이 있습니다.

시작 화면에서 이미지를 변경하고 다음 실행시 해당 변경 사항을 즉시 확인하려는 경우. 변경 한 이미지를 새 이미지 이름으로 사용하고 스토리 보드 또는 xib에서 새 이미지 파일에 연결하십시오.

다시 실행하면 새로운 변경 사항이 나타납니다.


1
앱을 삭제하고 싶지 않아서 시도했습니다. 이 플러스 내 장치를 다시 시작하면 나를 위해 일했다.
Murray Sagal

이것은 나를 위해 작동하지 않았습니다. devide를 다시 시작해도 작동하지 않습니다 ... 지금 포기합니다.
Lensflare

나를 위해 작동하지 않았다. 심지어 imageView를 제거하고 새 이미지로 새 이미지를 만들었는데 여전히 작동하지 않습니다.
Rickard Elimää

그것은 나를 위해 작동하지 않았다. 이전 이미지 하나가로드되지 않고 (이미지 대신 여전히 배경색이 표시됨) 새 실행 화면이 나타나기 전에 몇 초 동안 표시되었습니다.
Michal Cichon

13

이것은 나를 위해 일했다 : http://arsenkin.com/launch_screen_image_cache.html

다시, 위에서 언급 한 스레드 덕분 에이 문제를 해결할 수있는 방법을 찾았습니다. 새 이미지의 이름이 이전 이미지와 동일한 이름을 가진 경우 이전 이미지와 다른 이름을 지정하고 * .xcassets 폴더를 프로젝트 디렉토리에 연결하고 UIImageView에서 참조하십시오. 그리고 그게 다야. 어리석은 소리는 쉽지만 얼마나 화나게했는지


3
여기서 핵심 은 해당 이미지를 자산 카탈로그에서 제외시키는 것입니다. 감사!
Michal Cichon

3
이 솔루션은 프로덕션 사용자의 우수한 UX에 관심이 있고 이전 이미지와 새 이미지 간의 추악한 전환을 피하려는 경우 실제로 도움이됩니다.
Michal Cichon

3
마지막으로 실제로 작동하는 솔루션! 여기서 핵심은 이미지를 자산 폴더에서 꺼내는 것입니다.
Elad

1
앱을 다시 시작하거나 삭제하지 않고도 완벽하게 작동합니다.
Soufian Hossam

기묘한. 그러나 자산 카탈로그에서 이동 한 배경 이미지가 때때로로드되지 않고 검정색 배경이 표시됩니다. 이제 다시 디버깅해야하지만 불행히도 재생산 방법을 모릅니다.
Michal Cichon

10

앱을 제거하고 휴대 전화를 다시 시작한 후 앱을 다시 설치하십시오.이 경우 실제로 해결되었습니다.


5

나는 또한 같은 문제에 직면했다. 시뮬레이터 / iOS 장치는 처음 응용 프로그램을 시작할 때 시작 이미지를 캐시하기 때문에 발생합니다. Brian Trzupek의 답변 에 몇 가지 수정 사항을 추가했습니다 .

  1. Xcode 자산에서 이미지 세트 삭제 (예 : launch_image)
  2. 새 이미지 세트를 추가하고 이미지 세트를 추가하십시오.
  3. iOS 기기를 껐다 켜십시오. (시뮬레이터의 내용 및 설정 재설정).
  4. Xcode 빌드 폴더를 정리하십시오 ( command+ option+ shift+를 누름).K ).
  5. 기기 / 시뮬레이터에서 앱을 삭제합니다 (가능한 경우).
  6. 다시 뛰어.

5

나를 위해 일한 것 :

  • LaunchScreen의 장면 및 뷰 컨트롤러를 삭제하고 새로 생성합니다 ( 속성 관리자에서 "초기 뷰 컨트롤러"로 설정했는지 확인 ).

나를 위해 작동 하지 않는 것 :

  • 앱 삭제
  • iPhone, Mac 또는 Xcode 다시 시작
  • 파생 데이터 삭제
  • 장치 컨테이너 삭제
  • 청소
  • 스티브 잡스 부두 인형 3 개 굽기

노트 :

때때로 지우기 (시뮬레이터)도 필요합니다


4
나는 확신하지 못한다. 스티브 잡스 부두 인형의 출처를 확인해야합니다.
Chris Brandsma

3

장치를 연결하고 Xcode> 창> 장치> 장치로 이동하십시오. 이제 설치된 앱에서 앱을 선택하고 마우스 오른쪽 버튼을 클릭하고 컨테이너를 다운로드 한 다음 생성 된 파일로 이동하십시오. 오른쪽 클릭하십시오. 패키지 내용 표시, AppData, 라이브러리, 캐시, 파일을 삭제하십시오. 이제 Xcode> 창> 장치> 장치> 앱으로 이동하고 마우스 오른쪽 버튼을 클릭하여 컨테이너를 교체하십시오.


3

솔직히, 나는 이것이 업데이트되는지 여부를 확신하지 않고 살아 갈 위험을 감수하지 않았습니다.

따라서 xcassets를 사용한다고 가정하면 간단한 해결책은 다음과 같습니다.

  1. 기존 이미지 세트 삭제
  2. 이름이 다른 것을 다시 만들고 스플래시 화면 이미지를 추가하십시오
  3. 이 '새로운'이미지 세트 참조를 사용하도록 스토리 보드를 업데이트하십시오.

확실히 업데이트됩니다! (나는 심지어 장치에 이미 설치된 앱으로 테스트했습니다). 장치 캐시를 정리할 필요가 없습니다.


3
  1. 기기에서 앱 삭제
  2. 장치 전원 끄기
  3. 전원 공급 장치
  4. 앱을 설치하고 시작하십시오.

1

좋아, 그래서 나는 문제를 알아 냈다. 이전 버전의 앱에서는 Launch Screen XIB를 사용했습니다. 이 새 버전의 개발 과정에서 xib는 삭제되고 정적 시작 이미지로만 대체되었습니다.

해결책은 Launch Screen XIB를 사용하는 것입니다. 시작 화면 xib를 처음 사용한 순간 스냅 샷 디렉토리에 저장된 파일이 xib의 스냅 샷으로 바뀌 었습니다.


2
아니요, Launch Screen XIB를 사용하고 있으며 업데이트하지 않습니다. Launch Screen> Static image> Launch Screen에서 전환하여 문제를 해결할 수 있다고 생각합니다. XCode에서 시작 화면을 수정하고 실행하면 여전히 iPhone의 이전 시작 화면이 표시됩니다. 이미지가 장치에 캐시됩니다. 나는 그것이 트릭 할 것 발사 화면의 이름을 변경하는 경우 것 같아요
크리스토프 Fondacci

다른 이름으로 시작 화면을 다시 작성해도 문제를 해결하지 못했지만 여전히 이전 화면이 표시됩니다. 유일한 "희망"아이폰 OS는 모든 응용 프로그램 업데이트에서 캐시를 다시 생성한다는 것입니다,하지만 난 여기에 대한 문서를 찾을 수 없습니다
크리스토프 Fondacci

1

Xcode 10 / iOS 12

위에서 언급 한 모든 것을 시도한 후 LaunchScreen에서 이미지 뷰를 삭제하고 새로운 이미지 뷰로 교체해야했습니다.


1

이것이 바보처럼 들리지만이 문제를 해결하는 가장 빠른 방법입니다.

  1. 시작 LaunchScreen.xib화면 파일을 마우스 오른쪽 버튼으로 클릭 하고을 선택한 Remove file다음을 선택하십시오 Remove to trash. 프로젝트에서 파일의 모든 참조와 이전 업데이트가 제거됩니다.

  2. 휴지통으로 이동하여 파일을 xCode 프로젝트로 드래그 앤 드롭합니다 (내 yourProjectName).

  3. 청소하고 재건하십시오.


1

다음 코드를 사용하여 시작 화면 캐시를 정리하십시오.

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

용법:

UIApplication.shared.clearLaunchScreenCache()

0

이 문제도있었습니다. 완전한 초보자이기 때문에 LaunchScreen.storyboard를 LaunchScreen.xib로 변경했습니다. 실행이 실패했기 때문에 다시 .storyboard로 변경하여 앱을 다시 실행하여 다른 것을 망쳐 놓지 않았으며 이전 화면이 먼저 나타나지 않았습니다. 그래서 내가 한 일은 이전 캐시를 플러시해야합니다.


0

동일한 문제가 있었지만 런치 스크린 스토리 보드에 사용 된 이미지에만 해당됩니다. 자산 카탈로그에서 이미지 이름을 앱 번들로 변경하여 이미지를 이동하면 (예 : 자산 카탈로그에 설정된 이전 이미지를 launch_logo, 앱 번들의 이미지를 launchscreen_logo.png라고 함) 문제가 해결되었습니다.


0

나는 이것이 상황에 달려 있다고 생각합니다. 디버그 또는 테스트시 발생하면 시작 화면에서 이미지를 삭제하는 작업을합니다. 또는 앱을 제거한 다음 다시 시작하십시오.

그러나 보관 후에도 초기화 및 정리로 해결되지 않습니다.


0

제 경우에는 앱 설정-> 일반- 여기에 이미지 설명을 입력하십시오> 앱 아이콘 및 이미지 실행 - > 앱 아이콘 소스에서 AppIcon 소스를 선택하지 않았습니다.


0

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

나를위한 솔루션 작업

  1. 기기에서 앱 삭제
  2. 장치 끄기
  3. 장치 켜기
  4. 깨끗한 빌드 폴더
  5. 다시 빌드하고 앱을 설치하고 시작하십시오.

    즐겨


0

이 모든 단계를 수행했는지 확인하십시오

  1. 빌드 설정에서 ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME 키를 검색하고 전체 애플리케이션에서 자산 값을 검색 한 후 제거하십시오.
  2. 빌드 설정에서 ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME을 (를) 삭제하십시오.
  3. 새 시작 화면 만들기 Xcode-> 파일-> 새로 만들기-> 파일-> 시작 화면
  4. 앱 주요 대상으로 이동-> 일반-> 앱 아이콘 및 실행 이미지-> 시작 화면 파일-> 새 시작 화면 파일을 선택하십시오.
  5. 이전 시작 화면 만 변경 한 경우 이름이 다른 새 자산의 이름을 지정하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.