Share via


Universal Dismiss

Universal Dismiss, basato sul Centro notifiche nel cloud, fa sì che quando si elimina una notifica da un dispositivo, viene eliminata anche la stessa notifica sugli altri dispositivi.

Importante

Richiede l'aggiornamento dell'anniversario: è necessario avere come destinazione l'SDK 14393 ed eseguire la build 14393 o successiva per usare Universal Dismiss.

L'esempio comune di questo scenario è promemoria del calendario... hai un'app calendario su entrambi i dispositivi... ricevi un promemoria sul telefono e sul desktop... fai clic su Ignora sul desktop... grazie a Universal Dismiss, anche il promemoria sul telefono viene ignorato! Per abilitare Universal Dismiss occorre solo una riga di codice!

Diagram of Universal Dismiss

In questo scenario, il fatto chiave è che la stessa app è installata su più dispositivi, il che significa che ogni dispositivo sta già ricevendo notifiche. Un'app di calendario è l'esempio emblematico, dato che di solito hai la stessa app di calendario installata sia sul PC Windows che sul telefono, e ogni istanza dell'app ti invia già dei promemoria su ogni dispositivo. Aggiungendo il supporto per Universal Dismiss, le istanze degli stessi promemoria possono essere collegate tra i vari dispositivi.

Come attivare Universal Dismiss

Come sviluppatore, abilitare Universal Dismiss è estremamente facile. Devi semplicemente fornire un ID che ci permetta di collegare ogni notifica tra i vari dispositivi, in modo che quando l'utente chiude una notifica da un dispositivo, la corrispondente notifica collegata viene chiusa dall'altro dispositivo.

Universal dismiss RemoteId diagram

RemoteId: un identificatore che identifica in modo univoco una notifica tra i dispositivi.

Basta una sola riga di codice per aggiungere RemoteId, abilitando il supporto per Universal Dismiss! La modalità di generazione del RemoteId è a tua discrezione; tuttavia, devi assicurarti che identifichi in modo univoco la tua notifica su tutti i dispositivi e che lo stesso identificatore possa essere generato da diverse istanze della tua applicazione in esecuzione su dispositivi diversi.

Ad esempio, nella mia applicazione per l'organizzazione dei compiti, genero il mio RemoteId dicendo che è di tipo "promemoria" e poi includo l'ID dell'account online e l'identificatore online dell'oggetto dei compiti. Posso generare sempre lo stesso RemoteId, indipendentemente dal dispositivo che invia la notifica, poiché questi ID online sono condivisi tra i dispositivi.

var toast = new ScheduledToastNotification(content.GetXml(), startTime);
 
// If the RemoteId property is present
if (ApiInformation.IsPropertyPresent(typeof(ScheduledToastNotification).FullName, nameof(ScheduledToastNotification.RemoteId)))
{
    // Assign the RemoteId to add support for Universal Dismiss
    toast.RemoteId = $"reminder_{account.AccountId}_{homework.Identifier}"
}
  
ToastNotificationManager.CreateToastNotifier().AddToSchedule(toast);

Il codice seguente viene eseguito sia sull'applicazione per telefono che su quella per desktop, il che significa che la notifica su entrambi i dispositivi avrà lo stesso RemoteId.

Non devi fare altro! Quando l'utente chiude o fa clic su una notifica, verifichiamo se ha un RemoteId e, in caso affermativo, inviamo a ventaglio un dismiss di quel RemoteId su tutti i dispositivi dell'utente.

Problema noto: il recupero del RemoteId tramite le API ToastNotificationHistory.GetHistory() restituirà sempre una stringa vuota anziché il RemoteId specificato. Non preoccuparti, tutto è funzionante: è solo il recupero del valore che non funziona.

Nota

Se l'utente o l'azienda disabilita il mirroring delle notifiche per la tua app (o disabilita completamente il mirroring delle notifiche), Universal Dismiss non funzionerà, poiché non abbiamo le tue notifiche nel cloud.

Dispositivi supportati

Dall'aggiornamento dell'anniversario, Universal Dismiss è supportato su Windows Mobile e Windows Desktop. Universal Dismiss funziona in entrambe le direzioni, da PC a PC, da PC a telefono e da telefono a telefono.