Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Den här artikeln beskriver stegen för att skapa och skicka ett appmeddelande från en WinForms-app och sedan hantera aktivering när användaren interagerar med den. I den här artikeln används API:erna Windows App SDKMicrosoft.Windows.AppNotifications.
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 Push-meddelanden.
Viktigt!
Meddelanden för upphöjda appar (administratör) stöds inte för närvarande.
Förutsättningar
- En WinForms-app som riktar sig till .NET 6 eller senare
- NuGet-paketet Windows App SDK (
Microsoft.WindowsAppSDK)
Konfigurera projektet
Kontrollera att .csproj innehåller ett Windows målramverk i projektfilen (TargetFramework):
<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
Lägg till Windows App SDK NuGet-paketet:
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.7.250310001" />
För unpackade appar, lägg till:
<WindowsPackageType>None</WindowsPackageType>
Registrera dig för appmeddelanden
I Program.csregistrerar du dig för meddelanden innan du anropar Application.Run(). Du måste registrera din NotificationInvoked-hanterare innan du anropar Registrera.
Program.cs
using Microsoft.Windows.AppNotifications;
namespace WinFormsNotifications;
static class Program
{
[STAThread]
static void Main()
{
// Register the notification handler before calling Register
AppNotificationManager.Default.NotificationInvoked += OnNotificationInvoked;
AppNotificationManager.Default.Register();
ApplicationConfiguration.Initialize();
Application.Run(new Form1());
// Unregister when the app exits
AppNotificationManager.Default.Unregister();
}
private static void OnNotificationInvoked(
AppNotificationManager sender,
AppNotificationActivatedEventArgs args)
{
// NotificationInvoked is raised on a background thread,
// so use Control.Invoke to marshal to the UI thread
var form = Application.OpenForms.Count > 0
? Application.OpenForms[0] as Form1
: null;
form?.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".
});
}
}
Anmärkning
För opaketerade appar konfigurerar Register() automatiskt COM-serverregistreringen som tillåter Windows att starta appen när ett meddelande klickas. Du behöver inte konfigurera COM-aktivering eller AUMID manuellt.
Skicka ett appmeddelande
Använd AppNotificationBuilder för att skapa meddelandeinnehåll och AppNotificationManager.Show för att skicka ett meddelande från formuläret.
Form1.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);
}
Information om hur du lägger till knappar, bilder, indata och annat innehållsrikt innehåll i dina meddelanden finns i Appaviseringsinnehåll.
Installation av paketerad app
För uppackade WinForms-appar, Register() hanterar COM-registrering automatiskt. För paketerade appar (MSIX) måste du lägga till tillägg i din Package.appxmanifest. Se Packaged app setup i artikeln WPF för de nödvändiga manifestposterna.
Relaterat innehåll
Windows developer