Použití oznámení aplikací s aplikací pro UPW

Oznámení aplikace je automaticky otevírané okno uživatelského rozhraní, které se zobrazí mimo okno vaší aplikace a poskytuje uživateli včasné informace nebo akce. Oznámení můžou být čistě informační, můžou aplikaci spustit po kliknutí nebo aktivovat akci na pozadí, aniž by se aplikace přenesla do popředí.

Snímek obrazovky s oznámením aplikace

Tento článek vás provede postupem vytvoření a odeslání oznámení aplikace z aplikace pro UPW a následné zpracování aktivace, když s ní uživatel pracuje.

Přehled oznámení aplikací a pokynů pro další architektury najdete v přehledu oznámení aplikací.

Tento článek se zabývá místními oznámeními. Informace o doručování oznámení z cloudové služby najdete v Přehledu push oznámení.

Předpoklady

  • Projekt aplikace pro UPW v Visual Studio
  • Úloha vývoje Univerzální platforma Windows nainstalovaná v Visual Studio

Odeslání oznámení aplikace

Aplikace pro UPW používají obor názvů Windows.UI.Notifications k vytváření a odesílání oznámení pomocí XML. Tato část ukazuje, jak odesílat oznámení pomocí C# a 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);

Ovládání aktivace

Když uživatel klikne na vaše oznámení (nebo na tlačítko na oznámení s aktivací na popředí), metoda OnActivated vaší aplikace je spuštěna. OnLaunched není volána pro aktivaci oznámení, ani když byla vaše aplikace zavřená a spouští se poprvé. Doporučujeme zkombinovat OnLaunched a OnActivated do sdílené metody inicializace.

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

Informace o přidávání tlačítek, obrázků, vstupů, zvuku a dalšího bohatého obsahu do oznámení najdete v tématu Obsah oznámení aplikace.