Notificações de ícones para aplicações do Windows

Um selo de notificação transmite informações de resumo ou status específicas do seu aplicativo. Podem ser numéricos (1-99) ou um de um conjunto de glifos fornecidos pelo sistema. Exemplos de informações melhor transmitidas por meio de um selo incluem o status da conexão de rede em um jogo online, o status do usuário em um aplicativo de mensagens, o número de e-mails não lidos em um aplicativo de email e o 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. As insígnias podem ser exibidas em todos os tamanhos de blocos.

Note

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

Insígnias Numéricas

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

Distintivos de glifos

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 crachá mostrado.) <badge value="none"/>
actividade Um emblema de glifo indicando o status de <badge value="activity"/>
alarm Um emblema de glifo indicando o status de <badge value="alarm"/>
alerta Um emblema de glifo indicando o status <badge value="alert"/>
attention Um emblema de glifo denotando o status de <badge value="attention"/>
available Um emblema de glifo indicando o status <badge value="available"/>
away Um emblema de glifo que denota o status de <badge value="away"/>
busy Um emblema de glifo denotando o status de <badge value="busy"/>
erro Um emblema de glifo indicando o status de <badge value="error"/>
newMessage Um emblema de glifo denotando o status 'newMessage'. <badge value="newMessage"/>
paused Um emblema de glifo denotando o status <badge value="paused"/>
playing Um emblema de glifo denotando o status de <badge value="playing"/>
unavailable Um emblema de glifo indicando o status <badge value="unavailable"/>

Defina um badge numa aplicação do SDK de Aplicações Windows

A partir do SDK de Aplicações Windows 1.7, use a classe BadgeNotificationManager no Microsoft.Windows.BadgeNotifications namespace para definir e limpar badges. Esta é a abordagem recomendada para aplicações do SDK de Aplicações Windows. Em vez de construir uma carga útil XML, chama-se um método e passa-se um número ou um valor BadgeNotificationGlyph.

Ícone da Galeria WinUI 3 A aplicação WinUI 3 Gallery inclui exemplos interativos de controlos e funcionalidades WinUI. Descarrega a aplicação na Microsoft Store ou navega pelo código-fonte no GitHub.

Importante

BadgeNotificationManager requer identidade do pacote. Se a sua aplicação não tiver identidade de pacote, por exemplo porque não está empacotada, as chamadas a SetBadgeAsCount, SetBadgeAsGlyph e ClearBadge lançam uma exceção. Para mais informações, consulte Uma visão geral da Identidade de Pacotes nas aplicações Windows.

O emblema aparece no ícone da barra de tarefas da sua aplicação. Se a aplicação estiver fixada na barra de tarefas, o emblema aparece mesmo quando a aplicação não está a correr. Para obter a BadgeNotificationManager instância para a sua aplicação, use a propriedade Current .

Os exemplos seguintes baseiam-se no exemplo da Galeria WinUI 3. Para os usar, adiciona uma diretiva using Microsoft.Windows.BadgeNotifications; ao teu ficheiro de código.

Defina um emblema numérico

Chame SetBadgeAsCount e passe o número a apresentar. Se o número for superior a 99, o emblema mostra "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 emblema de glifo

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

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

Remover distintivo

Ligue para ClearBadge para remover o distintivo. Definir uma contagem de 0, ou o glifo BadgeNotificationGlyph.None, também limpa o emblema.

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

Crie um badge com a API UWP BadgeUpdateManager

Estes exemplos utilizam a classe BadgeUpdateManager no espaço de nomes Windows RuntimeWindows.UI.Notifications, que é a API de badge para aplicações UWP. Constróis o badge como um payload XML, usando os valores das tabelas anteriores. Se a sua aplicação usar o SDK de Aplicações Windows 1.7 ou posterior, use o BadgeNotificationManager em vez disso.

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

}

Limpar um selo

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

Obter o código de exemplo