Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
Questo articolo illustra i passaggi per creare e inviare una notifica dell'app da un'app WinForms e quindi gestire l'attivazione quando l'utente interagisce con esso. Questo articolo usa le API SDK per app di WindowsMicrosoft.Windows.AppNotifications.
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 Notifiche push.
Importante
Le notifiche per le app con privilegi elevati (amministratore) non sono attualmente supportate.
Prerequisiti
- Un'app WinForms che utilizza .NET 6 o una versione successiva
- Il pacchetto NuGet SDK per app di Windows (
Microsoft.WindowsAppSDK)
Configurare il progetto
Nel file di progetto (.csproj), assicurarsi che il TargetFramework includa un framework di destinazione Windows:
<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>
Aggiungere il pacchetto NuGet SDK per app di Windows:
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.7.250310001" />
Per le app non in pacchetto, aggiungere:
<WindowsPackageType>None</WindowsPackageType>
Registrarsi per le notifiche dell'app
In Program.cs, registrati per le notifiche prima di chiamare Application.Run(). È necessario registrare il gestore NotificationInvoked prima di chiamare Register.
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".
});
}
}
Annotazioni
Per le app non in pacchetto, Register() configura automaticamente la registrazione del server COM che consente Windows di avviare l'app quando si fa clic su una notifica. Non è necessario configurare manualmente l'attivazione COM o un AUMID.
Inviare una notifica dell'app
Usare AppNotificationBuilder per costruire il contenuto delle notifiche e AppNotificationManager.Show per inviare una notifica dal modulo.
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);
}
Per informazioni sull'aggiunta di pulsanti, immagini, input e altro contenuto avanzato alle notifiche, vedi Contenuto delle notifiche dell'app.
Configurazione dell'app in pacchetto
Per le app WinForms non in pacchetto, Register() gestisce automaticamente la registrazione COM. Per le app in pacchetto (MSIX), è necessario aggiungere estensioni a Package.appxmanifest. Vedere Pacchetto di installazione dell'app nell'articolo macchine virtuali Windows per le voci del manifesto necessarie.