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
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
Reactive form tipizzati con modellazione del FormBuilder in Angular
Configurare policy CORS in Azure Container Apps
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Le novità di Angular: i miglioramenti alla CLI
Implementare il throttling in ASP.NET Core
Utilizzare i primary constructor in C#
Utilizzare database e servizi con gli add-on di Container App
Gestire i null nelle reactive form tipizzate di Angular
Elencare le container images installate in un cluster di Kubernetes
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)