Notificações de selo para aplicativos Windows

Um selo de notificação transmite informações de resumo ou status específicas para seu aplicativo. Eles podem ser numéricos (1 a 99) ou um de um conjunto de glifos fornecidos pelo sistema. Exemplos de informações melhor transmitidas por meio de um selo incluem status de conexão de rede em um jogo online, status do usuário em um aplicativo de mensagens, número de emails não lidos em um aplicativo de email e número de novas postagens em um aplicativo de mídia social.

Os selos de notificação aparecem no ícone da barra de tarefas do aplicativo e no canto inferior direito do bloco inicial, independentemente de o aplicativo estar em execução. Os emblemas podem ser exibidos em todos os tamanhos de azulejo.

Note

Você não pode fornecer sua própria imagem de selo; somente imagens de selo fornecidas pelo sistema podem ser usadas.

Selos numéricos

Value Badge XML
Um número de 1 a 99. Um valor de 0 é equivalente ao valor de glifo "none" e limpará o selo. um distintivo numérico menor que 100. <badge value="1"/>
Qualquer número maior que 99. Um selo numérico maior que 99. <badge value="100"/>

Selos de glifo

Em vez de um número, um selo pode exibir um de um conjunto não extensível de glifos de status.

Status Glyph XML
none (Nenhum selo mostrado.) <badge value="none"/>
atividade Um selo de glifo que indica o status de <badge value="activity"/>
alarm Um selo de glifo que indica o status de <badge value="alarm"/>
alerta Um selo de glifo que indica o status de <badge value="alert"/>
attention Um selo de glifo que indica o status de <badge value="attention"/>
available Um selo de glifo que indica o status <badge value="available"/>
away Um selo de glifo que indica o status 'away'. <badge value="away"/>
busy Um selo de glifo que indica o status <badge value="busy"/>
erro Um selo de glifo que indica o status de <badge value="error"/>
newMessage Um selo de glifo que indica o status 'newMessage'. <badge value="newMessage"/>
paused Um selo de glifo que indica o status 'pausado'. <badge value="paused"/>
playing Um ícone que indica o status de <badge value="playing"/>
unavailable Um selo de glifo que indica o status 'indisponível'. <badge value="unavailable"/>

Defina um selo em um aplicativo do SDK do Aplicativo Windows

A partir do SDK do Aplicativo Windows 1.7, utilize a classe BadgeNotificationManager no namespace Microsoft.Windows.BadgeNotifications para definir e limpar selos. Essa é a abordagem recomendada para aplicativos SDK do Aplicativo Windows. Em vez de criar uma carga XML, você chama um método e passa um número ou um valor BadgeNotificationGlyph .

Ícone da Galeria do WinUI 3 O aplicativo Da Galeria do WinUI 3 inclui exemplos interativos de controles e recursos do WinUI. Obtenha o aplicativo na Microsoft Store ou navegue pelo código-fonte em GitHub.

Importante

BadgeNotificationManager requer a identidade do pacote. Se o aplicativo não tiver a identidade do pacote, por exemplo, porque ele está desempacotado, as chamadas para SetBadgeAsCount, SetBadgeAsGlyph e ClearBadge geram uma exceção. Para obter mais informações, consulte Uma visão geral da Identidade do Pacote em aplicativos Windows.

O selo é exibido no ícone da barra de tarefas do aplicativo. Se o aplicativo estiver fixado na barra de tarefas, o selo será exibido mesmo quando o aplicativo não estiver em execução. Para obter a BadgeNotificationManager instância do aplicativo, use a propriedade Current .

Os exemplos a seguir são baseados no exemplo da Galeria do WinUI 3. Para usá-las, adicione uma using Microsoft.Windows.BadgeNotifications; diretiva ao arquivo de código.

Definir um selo numérico

Chame SetBadgeAsCount e passe o número para mostrar. Se o número for maior que 99, o selo mostrará "99+".

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

Definir um selo de glifo

Chame SetBadgeAsGlyph e passe um valor BadgeNotificationGlyph. Os valores de enumeração correspondem aos glifos na tabela de selos de glifo .

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

Remover o selo

Chame ClearBadge para remover o badge. Definir a contagem como 0, ou usar o glifo BadgeNotificationGlyph.None, também remove o selo de notificação.

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

Criar um selo com a API UWP BadgeUpdateManager

Esses exemplos usam a classe BadgeUpdateManager no namespace Windows RuntimeWindows.UI.Notifications, que é a API de badge para aplicativos UWP. Você cria o badge como um payload XML, usando os valores nas tabelas anteriores. Se o aplicativo usar SDK do Aplicativo Windows 1.7 ou posterior, use BadgeNotificationManager.

Criar um selo numérico

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

}

Criar um selo de glifo

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

}

Remover um selo

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

Obter o código de exemplo