Condividi tramite


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...

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.

Risorse