투케이2K

105. (ios/swift) 앱 런처 대표 아이콘 동적으로 변경 실시 - setAlternateIconName 본문

IOS

105. (ios/swift) 앱 런처 대표 아이콘 동적으로 변경 실시 - setAlternateIconName

투케이2K 2022. 1. 22. 20:02

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT

 

[방법 설명]

 

[소스 코드]

    func changeAppIcon(iconName:String) {
        
        /*
        MARK: [참고 사항]
        1. info.plist 에 동적으로 변경하려는 아이콘을 등록해야합니다
        2. 동적으로 변경하려는 아이콘을 프로젝트에 추가해야합니다
        3. 동적 아이콘 변경은 ios 10.3 버전 이상부터 사용할 수 있습니다
        4. 호출 방법 : [실제 디바이스 기기에서 확인 필요]
           - self.changeAppIcon(iconName: "") // 기본 Assets 에서 설정한 아이콘 지정 실시
           - self.changeAppIcon(iconName: "Icon1") // info.plist 에서 지정한 동적 파일 KEY
        5. info.plist 지정 KEY :
           - Icon files (iOS 5)  >> 설정 시 자동으로 Newsstand Icon , Primary Icon 추가 목록 표시가 보임
           - CFBundleAlternateIcons  >>  Icon1 (뷰컨트롤러에서 호출할 이름)  >>  CFBundleIconFiles  >>  icon1 (이미지 파일명)
        */
        
        
        // MARK: [iOS 특정 버전 이상 분기 처리 사용]
        if #available(iOS 10.3, *) {
            print("")
            print("===============================")
            print("[ViewController >> changeAppIcon() :: 앱 아이콘 동적 변경 실시]")
            print("===============================")
            print("")
            
            
            // MARK: [멀티 icon 지원여부 체크]
            guard UIApplication.shared.supportsAlternateIcons
            else {
                print("")
                print("===============================")
                print("[ViewController >> changeAppIcon() :: 앱 아이콘 동적 변경 실패]")
                print("error [에러] :: 멀티 아이콘을 지원하지 않습니다")
                print("===============================")
                print("")
                return
            }
            
            
            // MARK: [앱 아이콘 길이 확인 및 기본 Assets 아이콘 표시 , 동적 아이콘 변경 실시]
            if iconName != nil && iconName.count>0 { // MARK: [동적 아이콘 변경하기]
                DispatchQueue.main.async {
                    UIApplication.shared.setAlternateIconName(iconName) { (iconChangeError) in
                        if let error = iconChangeError {
                            // [에러 발생]
                            print("")
                            print("===============================")
                            print("[ViewController >> changeAppIcon() :: 앱 아이콘 동적 변경 실패]")
                            print("error [에러] :: ", error.localizedDescription)
                            print("===============================")
                            print("")
                        }
                        else {
                            print("")
                            print("===============================")
                            print("[ViewController >> changeAppIcon() :: 앱 아이콘 동적 변경 성공]")
                            print("success [성공] :: ", "변경된 앱 아이콘을 확인해주세요")
                            print("===============================")
                            print("")
                        }
                    }
                }
            }
            else { // MARK: [기본 아이콘 설정 하기]
                DispatchQueue.main.async {
                    UIApplication.shared.setAlternateIconName(nil) { (iconChangeError) in
                        if let error = iconChangeError {
                            // [에러 발생]
                            print("")
                            print("===============================")
                            print("[ViewController >> changeAppIcon() :: 앱 기본 아이콘 설정 실패]")
                            print("error [에러] :: ", error.localizedDescription)
                            print("===============================")
                            print("")
                        }
                        else {
                            print("")
                            print("===============================")
                            print("[ViewController >> changeAppIcon() :: 앱 기본 아이콘 설정 성공]")
                            print("success [성공] :: ", "앱 기본 아이콘으로 설정되었습니다")
                            print("===============================")
                            print("")
                        }
                    }
                }
            }
        }
        else { // MARK: [iOS 10.3 버전 미만 인 경우 분기 처리 내용]
            print("")
            print("===============================")
            print("[ViewController >> changeAppIcon() :: 앱 아이콘 동적 변경 실패]")
            print("error [에러] :: ios 10.3 미만 단말기")
            print("===============================")
            print("")
        }
    }
 

[결과 출력]

 

 

반응형
Comments