Använda appaviseringar med en UWP-app

Ett appmeddelande är ett popup-fönster för användargränssnittet som visas utanför appens fönster och som levererar information eller åtgärder i tid till användaren. Meddelanden kan vara rent informationsbaserade, kan starta din app när du klickar eller utlösa en bakgrundsåtgärd utan att föra din app till förgrunden.

Skärmbild av ett appmeddelande

Den här artikeln beskriver stegen för att skapa och skicka ett appmeddelande från en UWP-app och sedan hantera aktivering när användaren interagerar med den.

En översikt över appmeddelanden och vägledning för andra ramverk finns i Översikt över appaviseringar.

Den här artikeln beskriver lokala meddelanden. Information om hur du levererar meddelanden från en molntjänst finns i Översikt över push-meddelanden.

Förutsättningar

  • Ett UWP-appprojekt i Visual Studio
  • Arbetsbelastningen för utveckling med Universell Windows-plattform installerad i Visual Studio

Skicka ett appmeddelande

UWP-appar använder namnområdet Windows.UI.Notifications för att skapa och skicka meddelanden med XML. Det här avsnittet visar hur du skickar meddelanden med C# och 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);

Hantera aktivering

När användaren klickar på ditt meddelande (eller en knapp i meddelandet med förgrundsaktivering) anropas appens OnActivated metod. OnLaunched anropas inte för notifikationsaktiveringar, även om appen har stängts och startas om för första gången. Vi rekommenderar att du kombinerar OnLaunched och OnActivated till en delad initieringsmetod.

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

Information om hur du lägger till knappar, bilder, indata, ljud och annat innehållsrikt innehåll i dina meddelanden finns i Appaviseringsinnehåll.