Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een app-melding is een pop-up van de gebruikersinterface die buiten het venster van uw app wordt weergegeven, waarbij tijdige informatie of acties aan de gebruiker worden geleverd. Meldingen kunnen puur informatief zijn, uw app starten wanneer erop wordt geklikt of een achtergrondactie activeren zonder uw app op de voorgrond te plaatsen.
In dit artikel wordt u begeleid bij de stappen voor het maken en verzenden van een app-melding van een WPF-app en het verwerken van de activering wanneer de gebruiker ermee werkt. In dit artikel worden de API's Windows App SDKMicrosoft.Windows.AppNotifications gebruikt.
Zie het overzicht van app-meldingen en -richtlijnen voor andere frameworks voor een overzicht van app-meldingen.
In dit artikel worden lokale meldingen behandeld. Zie Pushmeldingen voor informatie over het leveren van meldingen van een cloudservice.
Belangrijk
Meldingen voor apps met verhoogde beheerrechten worden momenteel niet ondersteund.
Vereiste voorwaarden
- Een WPF-app gericht op .NET 6 of hoger
- Het NuGet-pakket Windows App SDK (
Microsoft.WindowsAppSDK)
Stel uw project in
Controleer in uw projectbestand (.csproj) dat de TargetFramework een target framework voor Windows bevat:
<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
Voeg het Windows App SDK NuGet-pakket toe:
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.7.250310001" />
Voor uitgepakte apps voegt u het volgende toe:
<WindowsPackageType>None</WindowsPackageType>
Registreren voor app-meldingen
Registreer u voor meldingen in de Startup-gebeurtenishandler binnen uw App.xaml.cs. U moet uw NotificationInvoked-handler registreren voordatu Register aanroept.
Werk App.xaml eerst bij om een gebeurtenishandler voor Startup te gebruiken in plaats van StartupUri.
App.xaml
<Application x:Class="WpfNotifications.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="OnStartup">
</Application>
Implementeer vervolgens de logica voor het afhandelen van opstart- en meldingen:
App.xaml.cs
using System.Windows;
using Microsoft.Windows.AppNotifications;
namespace WpfNotifications;
public partial class App : Application
{
private void OnStartup(object sender, StartupEventArgs e)
{
// Register the notification handler before calling Register
AppNotificationManager.Default.NotificationInvoked += OnNotificationInvoked;
AppNotificationManager.Default.Register();
// Show the main window
var mainWindow = new MainWindow();
mainWindow.Show();
}
private void OnNotificationInvoked(
AppNotificationManager sender,
AppNotificationActivatedEventArgs args)
{
// NotificationInvoked is raised on a background thread,
// so dispatch to the UI thread for any UI updates
Current.Dispatcher.Invoke(() =>
{
// Parse args.Argument to determine what action to take.
// args.Argument contains the arguments from the notification
// or button that was clicked, as key=value pairs separated
// by '&', for example "action=reply&conversationId=9813".
});
}
protected override void OnExit(ExitEventArgs e)
{
AppNotificationManager.Default.Unregister();
base.OnExit(e);
}
}
Belangrijk
U moet bellen Register voordat u belt AppInstance.GetCurrent().GetActivatedEventArgs(). De NotificationInvoked handler moet worden geregistreerd voordat Register() wordt aangeroepen.
Opmerking
Voor uitgepakte apps stelt Register() automatisch de COM-serverregistratie in waarmee Windows uw app kan starten wanneer op een melding wordt geklikt. U hoeft com-activering of een AUMID niet handmatig te configureren.
Een app-melding verzenden
Gebruik AppNotificationBuilder om inhoud van meldingen samen te stellen en AppNotificationManager.Show om een melding te verzenden.
MainWindow.xaml.cs
using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;
private void SendNotification()
{
var notification = new AppNotificationBuilder()
.AddArgument("action", "viewConversation")
.AddArgument("conversationId", "9813")
.AddText("Andrew sent you a picture")
.AddText("Check this out, The Enchantments in Washington!")
.BuildNotification();
AppNotificationManager.Default.Show(notification);
}
Zie App-meldingsinhoud voor informatie over het toevoegen van knoppen, afbeeldingen, invoer en andere uitgebreide inhoud aan uw meldingen.
Installatie van verpakte app
Voor uitgepakte WPF-apps verwerkt Register() com-registratie automatisch. Voor verpakte apps (MSIX) moet u de volgende extensies toevoegen aan uw Package.appxmanifest:
<Package
xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
IgnorableNamespaces="... com desktop">
<Applications>
<Application>
<Extensions>
<!--Specify which CLSID to activate when notification is clicked-->
<desktop:Extension Category="windows.toastNotificationActivation">
<desktop:ToastNotificationActivation
ToastActivatorCLSID="YOUR-GUID-HERE" />
</desktop:Extension>
<!--Register COM CLSID-->
<com:Extension Category="windows.comServer">
<com:ComServer>
<com:ExeServer
Executable="YourApp.exe"
Arguments="----AppNotificationActivated:"
DisplayName="YourApp">
<com:Class Id="YOUR-GUID-HERE" />
</com:ExeServer>
</com:ComServer>
</com:Extension>
</Extensions>
</Application>
</Applications>
</Package>
Belangrijk
Het Executable kenmerk mag alleen de naam van het uitvoerbare bestand bevatten (bijvoorbeeld YourApp.exe), niet een submappad.
Verwante inhoud
Windows developer