JavaScript Notification API: notifiche di sistema dal browser

Nel contesto delle moderne applicazioni web, l’interazione con l’utente non si limita più alla semplice visualizzazione di contenuti all’interno della pagina. Sempre più spesso è necessario comunicare eventi rilevanti anche quando l’utente non sta attivamente navigando il sito. È proprio in questo scenario che entra in gioco la JavaScript Notification API.

Questa API consente alle applicazioni web di mostrare notifiche a livello di sistema operativo, simili a quelle delle applicazioni native, permettendo di raggiungere l’utente anche quando il browser è in background o la scheda non è in primo piano.

Notifiche API
Le notifiche della Notification API vengono mostrate dal sistema operativo, non dalla pagina web.

Cos’è la Notification API

La Notification API è una specifica Web che permette a JavaScript di interagire direttamente con il sistema di notifiche del dispositivo dell’utente. A differenza di un alert o di un messaggio HTML, la notifica non fa parte del DOM della pagina ma viene gestita dal sistema operativo.

Dal punto di vista ingegneristico, questo approccio consente di separare il livello di presentazione dell’applicazione web dal canale di comunicazione asincrono verso l’utente, migliorando visibilità ed efficacia dei messaggi.

Flusso concettuale: dalla pagina web al centro notifiche del sistema operativo.

Per motivi di sicurezza, l’uso della Notification API è generalmente consentito solo su connessioni HTTPS, fatta eccezione per localhost durante la fase di sviluppo.

Un’API basata sul consenso dell’utente

La Notification API è basata su un modello permission-based. Prima di poter mostrare una notifica, l’applicazione deve ottenere il consenso esplicito dell’utente, che può essere concesso, negato oppure lasciato nello stato predefinito.

Il browser gestisce direttamente la richiesta di autorizzazione.

Verifica del supporto nel browser

Prima di utilizzare la Notification API è buona prassi verificare che il browser la supporti:

if (!("Notification" in window)) {
  console.log("Questo browser non supporta le notifiche di sistema.");
}

Richiesta del permesso e gestione asincrona

La richiesta del permesso avviene in modo asincrono e non blocca il thread principale. È consigliabile richiederlo solo dopo un’azione esplicita dell’utente, come il click su un pulsante.

async function richiediPermessoNotifiche() {
  if (!("Notification" in window)) {
    console.log("Notifiche non supportate da questo browser.");
    return;
  }

  const permesso = await Notification.requestPermission();

  if (permesso === "granted") {
    console.log("Permesso notifiche concesso.");
  } else if (permesso === "denied") {
    console.log("Permesso notifiche negato dall’utente.");
  } else {
    console.log("Permesso notifiche non ancora deciso.");
  }
}

Creare e visualizzare una notifica

Una volta ottenuto il consenso, è possibile creare e visualizzare una notifica personalizzando titolo, messaggio e icona.

Esempio di notifica visualizzata sul sistema operativo.
function mostraNotifica(titolo, messaggio) {
  if (Notification.permission !== "granted") return;

  const notifica = new Notification(titolo, {
    body: messaggio,
    icon: "/img/notifica.png"
  });

  notifica.onclick = () => {
    window.focus();
    window.location.href = "/articoli/dettaglio";
  };
}

Limiti e buone pratiche

L’abuso delle notifiche porta quasi sempre l’utente a negare il permesso. È fondamentale utilizzare questo strumento solo per eventi realmente rilevanti e coerenti con le aspettative dell’utente.

Inoltre, la Notification API da sola non consente l’invio di notifiche con browser completamente chiuso. Per questo scenario è necessario introdurre Service Worker e Push API.

Conclusioni

La JavaScript Notification API rappresenta un ponte tra il mondo delle applicazioni web e quello delle applicazioni native. Se utilizzata correttamente, migliora l’esperienza utente e abilita flussi di comunicazione asincroni efficaci e moderni.