Windows 앱에 대한 배지 알림

알림 배지는 앱과 관련된 요약 또는 상태 정보를 전달합니다. 숫자(1-99) 또는 시스템 제공 문자 모양 집합 중 하나일 수 있습니다. 배지를 통해 가장 잘 전달되는 정보의 예시로는 온라인 게임의 네트워크 연결 상태, 메시징 앱의 사용자 상태, 메일 앱에서 읽지 않은 메일 수, 소셜 미디어 앱의 새 게시물 수 등이 있습니다.

알림 배지는 앱 실행 여부와 관계없이 앱의 작업 표시줄 아이콘과 시작 타일의 오른쪽 아래 모서리에 표시됩니다. 배지는 모든 타일 크기에 표시할 수 있습니다.

Note

사용자 고유의 배지 이미지를 제공할 수 없습니다. 시스템 제공 배지 이미지만 사용할 수 있습니다.

숫자 배지

Value Badge XML
1~99 사이의 숫자입니다. 0의 값은 글리프 값 "none"과 동일하며 배지를 삭제합니다. 100 미만의 숫자 배지입니다. <badge value="1"/>
99보다 큰 모든 숫자 99보다 큰 숫자 배지입니다. <badge value="100"/>

문자 모양 배지

배지는 숫자 대신 확장할 수 없는 상태 문자 모양 집합 중 하나를 표시할 수 있습니다.

Status Glyph XML
none (표시되는 배지가 없습니다.) <badge value="none"/>
activity '활동' 상태를 나타내는 문자 모양 배지입니다. <badge value="activity"/>
alarm '경보' 상태를 나타내는 문자 모양 배지입니다. <badge value="alarm"/>
alert '경고' 상태를 나타내는 문자 모양 배지입니다. <badge value="alert"/>
attention '주의' 상태를 나타내는 문자 모양 배지입니다. <badge value="attention"/>
available '사용 가능' 상태를 나타내는 문자 모양 배지입니다. <badge value="available"/>
away 'away' 상태를 나타내는 문자 모양 배지입니다. <badge value="away"/>
busy '사용 중' 상태를 나타내는 문자 모양 배지입니다. <badge value="busy"/>
error 'error' 상태를 나타내는 문자 모양 배지입니다. <badge value="error"/>
newMessage 'newMessage' 상태를 나타내는 문자 모양 배지입니다. <badge value="newMessage"/>
paused '일시 중지됨' 상태를 나타내는 문자 모양 배지입니다. <badge value="paused"/>
playing '재생' 상태를 나타내는 문자 모양 배지입니다. <badge value="playing"/>
unavailable '사용할 수 없음' 상태를 나타내는 문자 모양 배지입니다. <badge value="unavailable"/>

Windows 앱 SDK 앱에서 배지 설정

Windows 앱 SDK 1.7부터 Microsoft.Windows.BadgeNotifications 네임스페이스의 BadgeNotificationManager 클래스를 사용하여 배지를 설정하고 지웁니다. 이는 Windows 앱 SDK 앱에 권장되는 방법입니다. XML 페이로드를 빌드하는 대신 메서드를 호출하고 숫자 또는 BadgeNotificationGlyph 값을 전달합니다.

WinUI 3 갤러리 아이콘 WinUI 3 갤러리 앱에는 WinUI 컨트롤 및 기능의 대화형 예제가 포함되어 있습니다. Microsoft Store에서 앱을 다운로드하거나 GitHub 소스 코드를 찾습니다.

Important

BadgeNotificationManager 에는 패키지 ID가 필요합니다. 예를 들어 앱이 패키징되지 않았기 때문에 앱에 패키지 ID가 없는 경우 SetBadgeAsCount, SetBadgeAsGlyph, ClearBadge 호출은 예외를 throw합니다. 자세한 내용은 Windows 앱의 패키지 ID 개요를 참조하세요.

배지가 앱의 작업 표시줄 아이콘에 나타납니다. 앱이 작업 표시줄에 고정된 경우 앱이 실행되고 있지 않은 경우에도 배지가 나타납니다. 앱의 BadgeNotificationManager 인스턴스를 얻으려면 Current 속성을 사용합니다.

다음 예제는 WinUI 3 갤러리 샘플을 기반으로 합니다. 이를 사용하려면 코드 파일에 using Microsoft.Windows.BadgeNotifications; 지시문을 추가합니다.

숫자 배지 설정하기

SetBadgeAsCount를 호출하고 표시할 번호를 전달합니다. 숫자가 99보다 크면 배지에 "99+"가 표시됩니다.

private void SetBadgeCountButton_Click(object sender, RoutedEventArgs e)
{
    // Show the number 5 on the app's taskbar icon.
    BadgeNotificationManager.Current.SetBadgeAsCount(5);
}

글리프 배지 설정

SetBadgeAsGlyph를 호출하고 BadgeNotificationGlyph 값을 전달합니다. 열거형 값은 Glyph badges 표의 글리프에 해당합니다.

private void SetBadgeGlyphButton_Click(object sender, RoutedEventArgs e)
{
    // Show the alert glyph on the app's taskbar icon.
    BadgeNotificationManager.Current.SetBadgeAsGlyph(BadgeNotificationGlyph.Alert);
}

배지 삭제

ClearBadge를 호출하여 배지를 제거합니다. 0 개수 또는 BadgeNotificationGlyph.None 글리프를 설정하면 배지도 지웁니다.

private void ClearBadgeButton_Click(object sender, RoutedEventArgs e)
{
    BadgeNotificationManager.Current.ClearBadge();
}

UWP BadgeUpdateManager API를 사용하여 배지 만들기

이러한 예제에서는 UWP 앱의 배지 API인 Windows 런타임 네임스페이스에서 Windows.UI.Notifications 클래스를 사용합니다. 이전 테이블의 값을 사용하여 배지를 XML 페이로드로 구성합니다. 앱에서 Windows 앱 SDK 1.7 이상을 사용하는 경우 대신 BadgeNotificationManager를 사용하세요.

숫자 배지 생성

private void setBadgeNumber(int num)
{

    // Get the blank badge XML payload for a badge number
    XmlDocument badgeXml = 
        BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeNumber);

    // Set the value of the badge in the XML to our number
    XmlElement badgeElement = badgeXml.SelectSingleNode("/badge") as XmlElement;
    badgeElement.SetAttribute("value", num.ToString());

    // Create the badge notification
    BadgeNotification badge = new BadgeNotification(badgeXml);

    // Create the badge updater for the application
    BadgeUpdater badgeUpdater = 
        BadgeUpdateManager.CreateBadgeUpdaterForApplication();

    // And update the badge
    badgeUpdater.Update(badge);

}

문자 모양 배지 생성

private void updateBadgeGlyph()
{
    string badgeGlyphValue = "alert";

    // Get the blank badge XML payload for a badge glyph
    XmlDocument badgeXml = 
        BadgeUpdateManager.GetTemplateContent(BadgeTemplateType.BadgeGlyph);

    // Set the value of the badge in the XML to our glyph value
    Windows.Data.Xml.Dom.XmlElement badgeElement = 
        badgeXml.SelectSingleNode("/badge") as Windows.Data.Xml.Dom.XmlElement;
    badgeElement.SetAttribute("value", badgeGlyphValue);

    // Create the badge notification
    BadgeNotification badge = new BadgeNotification(badgeXml);

    // Create the badge updater for the application
    BadgeUpdater badgeUpdater = 
        BadgeUpdateManager.CreateBadgeUpdaterForApplication();

    // And update the badge
    badgeUpdater.Update(badge);

}

배지 삭제

private void clearBadge()
{
    BadgeUpdateManager.CreateBadgeUpdaterForApplication().Clear();
}

샘플 코드 가져오기