Notifiche badge per le app di Windows

Un badge di notifica fornisce informazioni di riepilogo o di stato specifiche per la tua app. Possono essere numerici (1-99) o uno di un set di glifi forniti dal sistema. Esempi di informazioni meglio trasmesse tramite una notifica includono lo stato della connessione di rete in un gioco online, lo stato utente in un'app di messaggistica, il numero di messaggi non letti in un'app di posta elettronica e il numero di nuovi post in un'app di social media.

Le notifiche vengono visualizzate sull'icona della barra delle applicazioni dell'app e nell'angolo in basso a destra del riquadro iniziale, indipendentemente dal fatto che l'app sia in esecuzione. I badge possono essere mostrati in tutte le dimensioni dei riquadri.

Note

Non è possibile fornire un'immagine badge personalizzata; è possibile usare solo immagini badge fornite dal sistema.

Badge numerici

Value Badge XML
Un numero compreso tra 1 e 99. Il valore 0 equivale al valore del glifo "nessuno" e cancella il badge. Un badge numerico meno di 100. <badge value="1"/>
Qualsiasi numero maggiore di 99. Un badge numerico maggiore di 99. <badge value="100"/>

Badge del glifo

Anziché un numero, un badge può visualizzare uno dei glifi di stato non estendibili.

Status Glyph XML
none (Nessun badge visualizzato.) <badge value="none"/>
activity Notifica del glifo che indica lo stato dell'attività. <badge value="activity"/>
alarm Notifica del glifo che indica lo stato di <badge value="alarm"/>
alert Badge del glifo che indica lo stato di allerta. <badge value="alert"/>
attention Badge di glifo indicante lo stato di <badge value="attention"/>
available Notifica del glifo che indica lo stato <badge value="available"/>
away Notifica del glifo che indica lo stato <badge value="away"/>
busy Notifica del glifo che indica lo stato <badge value="busy"/>
error Notifica del glifo che indica lo stato di errore. <badge value="error"/>
newMessage Distintivo a forma di glifo che denota lo stato <badge value="newMessage"/>
paused Notifica del glifo che indica lo stato <badge value="paused"/>
playing Distintivo glifo che indica lo stato di esecuzione. <badge value="playing"/>
unavailable Notifica del glifo che indica lo stato <badge value="unavailable"/>

Impostare un badge in un'app SDK per app di Windows

A partire da SDK per app di Windows 1.7, usare la classe BadgeNotificationManager nello spazio dei nomi Microsoft.Windows.BadgeNotifications per impostare e cancellare i badge. Questo è l'approccio consigliato per SDK per app di Windows app. Anziché compilare un payload XML, chiami un metodo e passi un numero o un valore BadgeNotificationGlyph.

Icona della raccolta WinUI 3 L'app Raccolta WinUI 3 include esempi interattivi di controlli e funzionalità WinUI. Ottenere l'app dal Microsoft Store o esplorare il codice sorgente in GitHub.

Important

BadgeNotificationManager richiede l'identità del pacchetto. Se l'app non ha un'identità del pacchetto, ad esempio perché non è pacchettizzata, le chiamate a SetBadgeAsCount, SetBadgeAsGlyph e ClearBadge generano un'eccezione. Per altre info, vedi Panoramica dell'identità del pacchetto nelle app Windows.

Il badge viene visualizzato sull'icona della barra delle applicazioni dell'app. Se l'app viene aggiunta alla barra delle applicazioni, il badge viene visualizzato anche quando l'app non è in esecuzione. Per ottenere l'istanza BadgeNotificationManager per la tua app, usa la proprietà Current.

Gli esempi seguenti sono basati sull'esempio di WinUI 3 Gallery. Per usarle, aggiungere una using Microsoft.Windows.BadgeNotifications; direttiva al file di codice.

Impostare un badge numerico

Chiamare SetBadgeAsCount e passare il numero da visualizzare. Se il numero è maggiore di 99, il badge mostra "99+".

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

Impostare un badge glifo

Chiamare SetBadgeAsGlyph e passare un BadgeNotificationGlyph valore. I valori di enumerazione corrispondono ai glifi nella tabella dei badge Glyph.

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

Cancella il badge

Chiama ClearBadge per rimuovere il badge. L'impostazione di un conteggio pari a 0 o del BadgeNotificationGlyph.None glifo cancella anche il badge.

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

Creare un badge con l'API BadgeUpdateManager UWP

Questi esempi usano la classe BadgeUpdateManager nel namespace Windows Runtime Windows.UI.Notifications, ovvero l'API badge per le app UWP. Il badge viene compilato come payload XML usando i valori nelle tabelle precedenti. Se l'app usa SDK per app di Windows 1.7 o versione successiva, usa BadgeNotificationManager invece.

Creare un badge numerico

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

}

Creare un badge per glifi

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

}

Rimuovere un badge

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

Scaricare il codice di esempio