요청 없이 아이콘 변경(iOS 10.3)

6469 단어 iOSSwiftios10.3

개시하다


요즘에는 계절과 활동에 따라 앱 아이콘을 바꾸는 앱이 자주 눈에 띈다.
지금까지 앱 신청 후 변경 필요
iOS10.3부터 신청하지 않아 프로그램의 아이콘을 변경할 수 있습니다.
나는 트위터의 아이콘을 페이스북의 아이콘으로 바꾸려고 했다.

Alternate Icons


UIApplication Extension에 추가된 것 같습니다.
UIApplication.h
extension UIApplication {

    // If false, alternate icons are not supported for the current process.
    @available(iOS 10.3, *)
    open var supportsAlternateIcons: Bool { get }


    // Pass `nil` to use the primary application icon. The completion handler will be invoked asynchronously on an arbitrary background queue; be sure to dispatch back to the main queue before doing any further UI work.
    @available(iOS 10.3, *)
    open func setAlternateIconName(_ alternateIconName: String?, completionHandler: ((Error?) -> Swift.Void)? = nil)


    // If `nil`, the primary application icon is being used.
    @available(iOS 10.3, *)
    open var alternateIconName: String? { get }
}
setAlternateIconName(_:completionHandler:) - UIApplication | Apple Developer Documentation
아이콘 변경 사항은 배경 상태에만 적용됩니다.
수정 후에 대화상자에서 사용자에게 알립니다.

이루어지다

  • 등록 아이콘
  • Info.plist에 필요한 항목 등록
  • 변경 아이콘 처리 구현
  • 1. 등록 아이콘


    아이콘은 자산 디렉터리를 사용할 수 없습니다.
    그래서 나는 프로젝트의 아래에 저장했다.

    2. Info.plist에 필요한 항목 등록


    (1) Add Row에 행을 추가하고 아이콘 파일(iOS 5)을 선택합니다.
    (2) Premiary Icon>Icon files>Item0에 기본 아이콘 이름을 입력합니다.
    (3) 교체 아이콘에 CFBundleAlternateIcons를 추가합니다.
    (4) CFBundleAlternateIcons > 임의의 이름을 입력합니다.
    (5) CFBundleAlternateIcons > 임의의 이름 > CFBundleIconFiles > Item0으로 교체된 파일 이름을 추가합니다.
    이번에는 페이스북 아이콘, 인스타그램 아이콘.
    이 값은 소스 코드에 사용됩니다.

    3. 아이콘 변경 처리 실현


    버튼을 클릭하여 아이콘을 수정합니다.
    ViewController.swift
    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    
        @IBAction func didTapChangeIcon(_ sender: UIButton) {
    
            // Info.plist で設定した値
            let iconName = "facebook Icon"
    
            UIApplication.shared.setAlternateIconName(iconName) { error in
                if let error = error {
                    print(error.localizedDescription)
                }
                print("Done!")
            }
        }
    }
    

    총결산


    시계나 달력 애플리케이션처럼 동적으로 변경할 수는 없지만
    계절과 활동에 따라 아이콘을 바꾸고 싶을 때 활용할 수 있을 것 같아요.

    참고 자료


    Swift World: Change your app’s icon programmatically in iOS 10.3
    신청 없이 iOS 앱 아이콘 바로 변경?!Alternate Icons의

    좋은 웹페이지 즐겨찾기