Pianificare una notifica di tipo avviso popup
Le notifiche di tipo avviso popup pianificate consentono di pianificare la visualizzazione di una notifica in un secondo momento, indipendentemente dal fatto che l'app sia in esecuzione in quel momento. Ciò è utile per scenari come la visualizzazione di promemoria o altre attività di completamento per l'utente, in cui il tempo e il contenuto della notifica sono noti in anticipo.
Si noti che le notifiche di tipo avviso popup pianificate hanno una finestra di recapito di 5 minuti. Se il computer è spento durante l'orario di recapito pianificato e rimane disattivato per più di 5 minuti, la notifica verrà "eliminata" perché non è più rilevante per l'utente. Se è necessario un recapito garantito delle notifiche indipendentemente dal tempo di disattivazione del computer, è consigliabile usare un'attività in background con un trigger di tempo, come illustrato in questo esempio di codice.
Importante
Le applicazioni desktop (in pacchetto e non in pacchetto) hanno passaggi leggermente diversi per l'invio di notifiche e la gestione dell'attivazione. Segui le istruzioni riportate di seguito, tuttavia sostituire ToastNotificationManager
con la DesktopNotificationManagerCompat
classe della documentazione delle app desktop.
API importanti: classe ScheduledToastNotification
Prerequisiti
Per comprendere appieno questo argomento, sarà utile...
- Conoscenza approfondita dei termini e dei concetti relativi alle notifiche di tipo avviso popup. Per altre informazioni, vedere Panoramica dell'avviso popup e del centro notifiche.
- Familiarità con il contenuto delle notifiche di tipo avviso popup di Windows 10. Per altre informazioni, vedere la documentazione sui contenuti toast.
- Un progetto di app UWP di Windows 10
Passaggio 1: Installare il pacchetto NuGet
Installa il pacchetto NuGet Microsoft.Toolkit.Uwp.Notifications. L'esempio di codice userà questo pacchetto. Alla fine dell'articolo verranno forniti i frammenti di codice "normale" che non usano pacchetti NuGet. Questo pacchetto consente di creare notifiche di tipo avviso popup senza usare XML.
Passaggio 2: Aggiungere le dichiarazioni dello spazio dei nomi
using Microsoft.Toolkit.Uwp.Notifications; // Notifications library
Passaggio 3: Pianificare la notifica
Useremo una semplice notifica basata su testo che ricorda a uno studente i compiti che hanno dovuto oggi. Costruisci la notifica e pianificala!
// Construct the content and schedule the toast!
new ToastContentBuilder()
.AddArgument("action", "viewItemsDueToday")
.AddText("ASTR 170B1")
.AddText("You have 3 items due today!");
.Schedule(DateTime.Now.AddSeconds(5));
Specifica una chiave primaria per l'avviso popup
Se desideri annullare, rimuovere o sostituire la notifica pianificata a livello di codice, devi utilizzare la proprietà Tag (e facoltativamente la proprietà Group) per fornire una chiave primaria per la notifica. Puoi quindi usare questa chiave primaria in futuro per annullare, rimuovere o sostituire la notifica.
Per altri dettagli sulla sostituzione o la rimozione di notifiche di tipo avviso popup già recapitate, vedere Avvio rapido: Gestione delle notifiche di tipo avviso popup nel centro notifiche (XAML).
I tag e i gruppi combinati fungono da chiave primaria composita. Il gruppo è l'identificatore più generico, in cui è possibile assegnare gruppi come "wallPosts", "messages", "friendRequests" e così via. E quindi Tag deve identificare in modo univoco la notifica stessa dall'interno del gruppo. Usando un gruppo generico, puoi dunque rimuovere tutte le notifiche da tale gruppo usando l'API RemoveGroup.
// Construct the content and schedule the toast!
new ToastContentBuilder()
.AddArgument("action", "viewItemsDueToday")
.AddText("ASTR 170B1")
.AddText("You have 3 items due today!");
.Schedule(DateTime.Now.AddSeconds(5), toast =>
{
toast.Tag = "18365";
toast.Group = "ASTR 170B1";
});
Annullare notifiche pianificate
Per annullare una notifica pianificata, devi prima recuperare l'elenco di tutte le notifiche pianificate.
Trova quindi l'avviso popup pianificato corrispondente al tag (e facoltativamente al gruppo) specificato in precedenza e chiamare RemoveFromSchedule().
// Create the toast notifier
ToastNotifierCompat notifier = ToastNotificationManagerCompat.CreateToastNotifier();
// Get the list of scheduled toasts that haven't appeared yet
IReadOnlyList<ScheduledToastNotification> scheduledToasts = notifier.GetScheduledToastNotifications();
// Find our scheduled toast we want to cancel
var toRemove = scheduledToasts.FirstOrDefault(i => i.Tag == "18365" && i.Group == "ASTR 170B1");
if (toRemove != null)
{
// And remove it from the schedule
notifier.RemoveFromSchedule(toRemove);
}
Importante
Un'app Win32 non in pacchetto (manca l'identità del pacchetto in fase di esecuzione) deve usare la classe ToastNotificationManagerCompat come illustrato in precedenza. Se si usa ToastNotificationManager stesso, si riceverà un'eccezione di elemento non trovato. Tutti i tipi di app possono usare la classe Compat e funzioneranno correttamente.
Gestione delle attivazioni
Per altre informazioni sulla gestione dell'attivazione, vedere la documentazione sull'invio di un avviso popup locale. L'attivazione di una notifica di tipo avviso popup pianificata viene gestita come l'attivazione di una notifica di tipo avviso popup locale.
Aggiunta di azioni, input e altro ancora
Per altre informazioni su argomenti avanzati come azioni e input, vedere la documentazione sull'invio di un avviso popup locale. Le azioni e gli input funzionano allo stesso modo negli avvisi popup locali come in avvisi popup pianificati.