Xamarin.iOS의 대체 앱 아이콘

이 문서에서는 Xamarin.iOS에서 대체 앱 아이콘을 사용하는 방법에 대해 설명합니다.

Apple은 앱이 아이콘을 관리할 수 있도록 iOS 10.3에 몇 가지 향상된 기능을 추가했습니다.

  • ApplicationIconBadgeNumber - Springboard에서 앱 아이콘의 배지를 가져오거나 설정합니다.
  • SupportsAlternateIcons- 앱에 대체 아이콘 집합이 있는 경우 true
  • AlternateIconName - 현재 선택되었거나 null 기본 아이콘을 사용하는 경우 대체 아이콘의 이름을 반환합니다.
  • SetAlternameIconName - 이 메서드를 사용하여 앱의 아이콘을 지정된 대체 아이콘으로 전환합니다.

A sample alert when an app changes its icon

Xamarin.iOS 프로젝트에 대체 아이콘 추가

앱이 대체 아이콘으로 전환할 수 있도록 하려면 Xamarin.iOS 앱 프로젝트에 아이콘 이미지 컬렉션을 포함해야 합니다. 이러한 이미지는 일반적인 Assets.xcassets 방법을 사용하여 프로젝트에 추가할 수 없으며 Resources 폴더에 직접 추가해야 합니다.

다음을 수행합니다.

  1. 폴더에서 필요한 아이콘 이미지를 선택하고 모두 선택하고 솔루션 탐색기 Resources 폴더끕니다.

    Select the icons images from a folder

  2. 메시지가 표시되면 복사를 선택하고 선택한 모든 파일에 대해 동일한 작업을 사용하고 확인 단추를 클릭합니다.

    The Add File to Folder dialog box

  3. Resources 폴더는 완료되면 다음과 같이 표시됩니다.

    The Resources folder should look like this

Info.plist 파일 수정

Resources 폴더에 필요한 이미지를 추가하면 CFBundleAlternateIcons 키를 프로젝트의 Info.plist 파일에 추가해야 합니다. 이 키는 새 아이콘의 이름과 아이콘을 구성하는 이미지를 정의합니다.

다음을 수행합니다.

  1. 솔루션 탐색기에서 Info.plist 파일을 두 번 클릭하여 편집용으로 엽니다.
  2. 원본 보기로 전환합니다.
  3. 번들 아이콘 키를 추가하고 유형 집합을 사전으로 둡니다.
  4. CFBundleAlternateIcons 키를 추가하고 형식을 사전으로 설정합니다.
  5. AppIcon2 키를 추가하고 형식을 사전으로 설정합니다. 새 대체 앱 아이콘 집합의 이름이 됩니다.
  6. CFBundleIconFiles 키 추가 및 배열에 형식설정
  7. 확장명 및 @3x@2x기타 접미사(예100_icon)를 벗어나는 각 아이콘 파일의 배열에 새 문자열 CFBundleIconFiles 을 추가합니다. 대체 아이콘 집합을 구성하는 모든 파일에 대해 이 단계를 반복합니다.
  8. UIPrerenderedIcon 사전에 키를 추가하고 형식AppIcon2 부울설정하고 값을 No설정합니다.
  9. 변경 내용을 파일에 저장합니다.

완료된 결과 Info.plist 파일은 다음과 같이 표시됩니다.

The completed Info.plist file

또는 텍스트 편집기에서 열리는 경우 다음과 같습니다.

<key>CFBundleIcons</key>
<dict>
    <key>CFBundleAlternateIcons</key>
    <dict>
        <key>AppIcon2</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>100_icon</string>
                <string>114_icon</string>
                <string>120_icon</string>
                <string>144_icon</string>
                <string>152_icon</string>
                <string>167_icon</string>
                <string>180_icon</string>
                <string>29_icon</string>
                <string>40_icon</string>
                <string>50_icon</string>
                <string>512_icon</string>
                <string>57_icon</string>
                <string>58_icon</string>
                <string>72_icon</string>
                <string>76_icon</string>
                <string>80_icon</string>
                <string>87_icon</string>
            </array>
            <key>UIPrerenderedIcon</key>
            <false/>
        </dict>
    </dict>
</dict>

앱 아이콘 관리

Xamarin.iOS 프로젝트에 포함된 아이콘 이미지와 Info.plist 파일이 올바르게 구성된 상태에서 개발자는 iOS 10.3에 추가된 많은 새로운 기능 중 하나를 사용하여 앱의 아이콘을 제어할 수 있습니다.

클래스의 UIApplication 속성을 통해 개발자는 SupportsAlternateIcons 앱이 대체 아이콘을 지원하는지 확인할 수 있습니다. 예시:

// Can the app select a different icon?
PrimaryIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
AlternateIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;

ApplicationIconBadgeNumber 클래스의 UIApplication 속성을 사용하면 개발자가 Springboard에서 앱 아이콘의 현재 배지 번호를 얻거나 설정할 수 있습니다. 기본값은 영(0)입니다. 예시:

// Set the badge number to 1
UIApplication.SharedApplication.ApplicationIconBadgeNumber = 1;

AlternateIconName 클래스의 UIApplication 속성을 사용하면 개발자가 현재 선택한 대체 앱 아이콘의 이름을 얻거나 앱이 기본 아이콘을 사용하는 경우 반환 null 됩니다. 예시:

// Get the name of the currently selected alternate
// icon set
var name = UIApplication.SharedApplication.AlternateIconName;

if (name != null ) {
    // Do something with the name
}

SetAlternameIconName 클래스의 UIApplication 속성을 사용하면 개발자가 앱 아이콘을 변경할 수 있습니다. 아이콘의 이름을 전달하여 선택하거나 null 기본 아이콘으로 돌아갑니다. 예시:

partial void UsePrimaryIcon (Foundation.NSObject sender)
{
    UIApplication.SharedApplication.SetAlternateIconName (null, (err) => {
        Console.WriteLine ("Set Primary Icon: {0}", err);
    });
}

partial void UseAlternateIcon (Foundation.NSObject sender)
{
    UIApplication.SharedApplication.SetAlternateIconName ("AppIcon2", (err) => {
        Console.WriteLine ("Set Alternate Icon: {0}", err);
    });
}

앱이 실행되고 사용자가 대체 아이콘을 선택하면 다음과 같은 경고가 표시됩니다.

A sample alert when an app changes its icon

사용자가 기본 아이콘으로 다시 전환하면 다음과 같은 경고가 표시됩니다.

A sample alert when an app changes to the primary icon

요약

이 문서에서는 Xamarin.iOS 프로젝트에 대체 앱 아이콘을 추가하고 앱 내에서 사용하는 방법을 설명했습니다.