Windows アプリのバッジ通知

通知バッジは、アプリに固有の概要または状態情報を伝えます。 数値 (1 から 99) またはシステム提供のグリフのセットの 1 つを指定できます。 バッジを通じて最もよく伝わる情報の例としては、オンライン ゲームのネットワーク接続状態、メッセージング アプリのユーザー状態、メール アプリ内の未読メールの数、ソーシャル メディア アプリの新しい投稿の数などがあります。

通知バッジは、アプリが実行されているかどうかに関係なく、アプリのタスク バー アイコンとスタート タイルの右下隅に表示されます。 バッジは、すべてのタイル サイズに表示できます。

Note

独自のバッジ イメージを指定することはできません。システム提供のバッジ イメージのみを使用できます。

数値バッジ

Value Badge XML
1 から 99 までの数値。 値 0 はグリフ値 "none" に相当し、バッジをクリアします。 100 未満の数値バッジ。 <badge value="1"/>
99 を超える任意の数。 99 より大きい数値バッジ。 <badge value="100"/>

グリフ バッジ

バッジには、数値の代わりに、拡張可能でない状態グリフのセットのいずれかを表示できます。

Status Glyph XML
none (バッジは表示されません。) <badge value="none"/>
アクティビティ <badge value="activity"/>
alarm <badge value="alarm"/>
アラート <badge value="alert"/>
attention <badge value="attention"/>
available <badge value="available"/>
away 'away' 状態を示すグリフ バッジ。 <badge value="away"/>
busy <badge value="busy"/>
エラー <badge value="error"/>
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 クラスを使用してバッジを設定およびクリアします。 これは、Windows アプリ SDK アプリに推奨されるアプローチです。 XML ペイロードを作成する代わりに、メソッドを呼び出し、数値または BadgeNotificationGlyph 値を渡します。

WinUI 3 ギャラリー アイコン WinUI 3 ギャラリー アプリには、WinUI コントロールと機能の対話型の例が含まれています。 Microsoft Store からアプリを取得するか、GitHub でソース コードを参照します。

Important

BadgeNotificationManager にはパッケージ ID が必要です。 パッケージ化されていないなどの理由でアプリにパッケージ ID がない場合は、 SetBadgeAsCount、 SetBadgeAsGlyph、 ClearBadge の呼び出しで例外がスローされます。 詳細については、「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 バッジ テーブルのグリフに対応します。

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();
}

サンプル コードを取得する