Condividi tramite


Usare le notifiche delle app con un'app UWP

Una notifica dell'app è un popup dell'interfaccia utente visualizzato all'esterno della finestra dell'app, fornendo informazioni o azioni tempestive all'utente. Le notifiche possono essere puramente informative, possono avviare l'app quando si fa clic o attivare un'azione in background senza portare l'app in primo piano.

Screenshot di una notifica dell'app

Questo articolo illustra i passaggi per creare e inviare una notifica dell'app da un'app UWP e quindi gestire l'attivazione quando l'utente interagisce con esso.

Per una panoramica delle notifiche delle app e indicazioni per altri framework, vedere Panoramica delle notifiche delle app.

Questo articolo illustra le notifiche locali. Per informazioni sulla distribuzione di notifiche da un servizio cloud, vedere Panoramica delle notifiche push.

Prerequisiti

  • Un progetto di app UWP in Visual Studio
  • Il carico di lavoro piattaforma UWP (Universal Windows Platform) development installato in Visual Studio

Inviare una notifica dell'app

Le app UWP usano lo spazio dei nomi Windows.UI.Notifications per costruire e inviare notifiche tramite XML. Questa sezione illustra come inviare notifiche usando C# e C++.

using Windows.Data.Xml.Dom;
using Windows.UI.Notifications;

var xml = @"<toast launch=""action=viewConversation&amp;conversationId=9813"">
    <visual>
        <binding template=""ToastGeneric"">
            <text>Andrew sent you a picture</text>
            <text>Check this out, The Enchantments in Washington!</text>
        </binding>
    </visual>
</toast>";

var doc = new XmlDocument();
doc.LoadXml(xml);

var notification = new ToastNotification(doc);
ToastNotificationManager.CreateToastNotifier().Show(notification);

Gestire l'attivazione

Quando l'utente fa clic sulla notifica (o un pulsante nella notifica con attivazione in primo piano), viene richiamato il metodo dell'app OnActivated . OnLaunched non viene chiamato per le attivazioni delle notifiche, anche se l'applicazione è stata chiusa e si avvia per la prima volta. È consigliabile combinare OnLaunched e OnActivated in un metodo di inizializzazione condiviso.

App.xaml.cs

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
    OnLaunchedOrActivated(e.PreviousExecutionState);

    var rootFrame = Window.Current.Content as Frame;
    if (e.PrelaunchActivated == false)
    {
        if (rootFrame?.Content == null)
        {
            rootFrame?.Navigate(typeof(MainPage), e.Arguments);
        }
        Window.Current.Activate();
    }
}

protected override void OnActivated(IActivatedEventArgs e)
{
    OnLaunchedOrActivated(e.PreviousExecutionState);

    if (e is ToastNotificationActivatedEventArgs toastArgs)
    {
        var rootFrame = Window.Current.Content as Frame;
        if (rootFrame?.Content == null)
        {
            rootFrame?.Navigate(typeof(MainPage));
        }
        Window.Current.Activate();

        // Parse the notification arguments
        string argument = toastArgs.Argument;
        // TODO: Navigate to the relevant content based on the arguments
    }
}

private void OnLaunchedOrActivated(ApplicationExecutionState previousState)
{
    if (Window.Current.Content is not Frame)
    {
        var rootFrame = new Frame();
        rootFrame.NavigationFailed += OnNavigationFailed;
        Window.Current.Content = rootFrame;
    }
}

Per informazioni sull'aggiunta di pulsanti, immagini, input, audio e altro contenuto avanzato alle notifiche, vedi Contenuto delle notifiche dell'app.