Se la nostra app riceve una notifica mentre è attiva, Windows Phone non visualizza la classica toast a cui siamo abituati, perché la gestione della stessa è demandata allo sviluppatore: l'idea è che se l'app è attiva in quel determinato momento, debba essere in grado di gestire questo aspetto.
Questo problema è facilmente risolvibile, in quanto è sufficiente intercettare l'evento ShellToastNotificationReceived della classe HttpNotificationChannel.
Purtroppo non è presente un controllo nativo che implementi questa funzionalità. Resta comunque possibile fare riferimento al controllo ToastPrompt, introdotto dal Coding4Fun Toolkit for Windows Phone, disponibile gratuitamente su http://coding4fun.codeplex.com/.
Una volta aggiunta una reference a questo toolkit, è sufficiente intercettare l'evento menzionato in precedenza:
... pushChannel = HttpNotificationChannel.Find(channelName); // altro codice... pushChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(OnNotificationReceived);
A questo punto, abbiamo la possibilità di intercettare l'arrivo della notifica, che va poi visualizzata:
void OnNotificationReceived(object sender, NotificationEventArgs e) { // verifichiamo che sia stato inviato anche un URL var uri = e.Collection.ContainsKey("Param") ? new Uri(e.Collection["Param"], UriKind.Relative) : null; // mostriamo la finestra Dispatcher.BeginInvoke(() => { var toast = new ToastPrompt { Title = e.Collection["Text1"], Message = e.Collection["Text2"], ImageSource = new BitmapImage(new Uri("..\\ApplicationIcon.png", UriKind.RelativeOrAbsolute)) }; // intercetto il tap e navigo toast.Tap += (o, ea) => { if (uri != null) { // navighiamo } }; toast.Show(); }); }
Poiché con la notifica possono essere inviate informazioni aggiuntive, come ad esempio un link a cui navigare, intercettiamo l'evento Tap del controllo, così da poter gestire l'eventuale informazione aggiuntiva passata con la notifica.

Questo stesso codice può essere utilizzato in altri scenari, ad esempio per notificare l'utente che un download è terminato, o, più semplicemente, per mostrare messaggi con avvisi che scompaiano in maniera automatica, senza distrarre troppo l'utente.
Per informazioni su come gestire le notifiche push in Windows Phone:
http://aspit.co/adl
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare Intersect e Except per filtrare set di dati in TSql
Eseguire script pre e post esecuzione di un workflow di GitHub
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Ottenere un token di accesso per una GitHub App
Utilizzare Locust con Azure Load Testing
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Migliorare l'organizzazione delle risorse con Azure Policy
Creare una libreria CSS universale: Clip-path
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Introduzione alle Container Queries
Ricevere notifiche sui test con Azure Load Testing
I più letti di oggi
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- .NET Conference Italia 2025 - Milano
- The Agentic Day - Milano
- Gestione ciclo di vita in .NET Aspire
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!