API Notification Triggers

I trigger di notifica ti consentono di pianificare notifiche locali che non richiedono una connessione di rete, il che le rende ideali per casi d'uso come le app di calendario.

Che cosa sono le condizioni di attivazione delle notifiche?

Gli sviluppatori web possono visualizzare le notifiche utilizzando l'API Web Notifications. Questa funzionalità viene spesso utilizzata con l'API Push per informare l'utente di informazioni urgenti, come notizie dell'ultima ora o messaggi ricevuti. Le notifiche vengono mostrate eseguendo JavaScript sul dispositivo dell'utente.

Il problema con l'API Push è che non è affidabile per l'attivazione di notifiche che devono essere mostrate quando viene soddisfatta una condizione particolare, come l'ora o la posizione. Un esempio di condizione basata sul tempo è una notifica del calendario che ti ricorda un incontro importante con il tuo capo alle 14:00. Un esempio di condizione basata sulla posizione è una notifica che ti ricorda di comprare il latte quando ti trovi nelle vicinanze del tuo negozio di alimentari. La connettività di rete o le funzionalità di risparmio energetico come la modalità Doze possono ritardare la ricezione delle notifiche push.

I trigger di notifica risolvono questo problema consentendoti di pianificare le notifiche con la relativa condizione di attivazione in anticipo, in modo che il sistema operativo invii la notifica al momento giusto anche se non è presente connettività di rete o il dispositivo è in modalità Risparmio energetico.

Casi d'uso

Le applicazioni di calendario possono utilizzare trigger di notifica basati sul tempo per ricordare a un utente le riunioni imminenti. Lo schema di notifica predefinito per un'app di calendario potrebbe essere quello di mostrare una prima notifica un'ora prima di una riunione e poi un'altra notifica più urgente cinque minuti prima.

Un'emittente televisiva potrebbe ricordare agli utenti che il loro programma TV preferito sta per iniziare o che un live streaming di una conferenza sta per iniziare.

I siti di conversione del fuso orario possono utilizzare trigger di notifica basati sull'ora per consentire agli utenti di programmare allarmi per conferenze telefoniche o videochiamate.

Stato attuale

Passaggio Stato
1. Creare una spiegazione Completato
2. Crea la bozza iniziale delle specifiche Non avviato
3. Raccogli feedback e itera la progettazione. In progress
4. Prova dell'origine Completa
5. Avvia Non avviato

Come utilizzare i trigger di notifica

Attivazione tramite about://flags

Per sperimentare l'API Notification Triggers localmente, senza un token di prova dell'origine, attiva il flag #enable-experimental-web-platform-features in about://flags.

Rilevamento delle funzionalità

Per scoprire se il browser supporta i trigger di notifica, verifica l'esistenza della proprietà showTrigger:

if ('showTrigger' in Notification.prototype) {
  /* Notification Triggers supported */
}

Pianificazione di una notifica

La pianificazione di una notifica è simile alla visualizzazione di una normale notifica push, tranne per il fatto che devi trasmettere una proprietà di condizione showTrigger con un oggetto TimestampTrigger come valore all'oggetto options della notifica.

const createScheduledNotification = async (tag, title, timestamp) => {
  const registration = await navigator.serviceWorker.getRegistration();
  registration.showNotification(title, {
    tag: tag,
    body: 'This notification was scheduled 30 seconds ago',
    showTrigger: new TimestampTrigger(timestamp + 30 * 1000),
  });
};

Annullare una notifica pianificata

Per annullare le notifiche pianificate, devi prima richiedere un elenco di tutte le notifiche che corrispondono a un determinato tag tramite ServiceWorkerRegistration.getNotifications(). Tieni presente che devi superare il flag includeTriggered affinché le notifiche pianificate vengano incluse nell'elenco:

const cancelScheduledNotification = async (tag) => {
  const registration = await navigator.serviceWorker.getRegistration();
  const notifications = await registration.getNotifications({
    tag: tag,
    includeTriggered: true,
  });
  notifications.forEach((notification) => notification.close());
};

Debug

Puoi utilizzare il pannello Notifiche di Chrome DevTools per eseguire il debug delle notifiche. Per iniziare il debug, premi Avvia registrazione eventi Avvia registrazione di eventi o Ctrl+E (Cmd+E su Mac). Chrome DevTools registra tutti gli eventi di notifica, incluse le notifiche pianificate, visualizzate e chiuse, per tre giorni, anche quando DevTools è chiuso.

Un evento di notifica pianificato è stato registrato nel riquadro Notifiche di Strumenti per sviluppatori di Chrome, che si trova nel riquadro Applicazione.
Una notifica programmata.
Un evento di notifica visualizzato è stato registrato nel riquadro Notifiche di Chrome DevTools.
Una notifica visualizzata.

Demo

Puoi vedere i trigger di notifica in azione in una demo, che ti ha permesso di programmare le notifiche, elencare le notifiche programmate e annullarle.

Uno screenshot della web app demo Trigger di notifica.
La demo delle condizioni di attivazione delle notifiche.

Sicurezza e autorizzazioni

Il team di Chrome ha progettato e implementato l'API Notification Triggers utilizzando i principi fondamentali definiti in Controlling Access to Powerful Web Platform Features, tra cui controllo utente, trasparenza ed ergonomia. Poiché questa API richiede i service worker, richiede anche un contesto sicuro. L'utilizzo dell'API richiede la stessa autorizzazione delle normali notifiche push.

Controllo utente

Questa API è disponibile solo nel contesto di un ServiceWorkerRegistration. Ciò implica che tutti i dati richiesti vengono archiviati nello stesso contesto ed eliminati automaticamente quando il service worker viene eliminato o quando l'utente elimina tutti i dati del sito per l'origine. Il blocco dei cookie impedisce anche l'installazione dei service worker in Chrome e, di conseguenza, l'utilizzo di questa API. Le notifiche possono sempre essere disattivate dall'utente per il sito nelle impostazioni del sito.

Trasparenza

A differenza dell'API Push, questa API non dipende dalla rete, il che implica che le notifiche pianificate hanno bisogno di tutti i dati richiesti in anticipo, incluse le risorse immagine a cui fanno riferimento gli attributi badge, icon e image. Ciò significa che la visualizzazione di una notifica pianificata non è osservabile dallo sviluppatore e non comporta l'attivazione del service worker finché l'utente non interagisce con la notifica. Di conseguenza, al momento non esiste un modo noto in cui lo sviluppatore possa ottenere informazioni sull'utente tramite approcci potenzialmente invasivi della privacy come la ricerca della geolocalizzazione dell'indirizzo IP. Questo design consente inoltre alla funzionalità di sfruttare facoltativamente i meccanismi di pianificazione forniti dal sistema operativo come AlarmManager di Android, che aiuta a preservare la batteria.

Feedback

Il team di Chrome vuole conoscere le tue esperienze con i trigger di notifica.

Descrivi la progettazione dell'API

C'è qualcosa nell'API che non funziona come previsto? Oppure mancano metodi o proprietà che ti servono per implementare la tua idea? Hai una domanda o un commento sul modello di sicurezza? Segnala un problema relativo alle specifiche nel repository GitHub dei trigger di notifica o aggiungi i tuoi commenti a un problema esistente.

Problemi con l'implementazione?

Hai trovato un bug nell'implementazione di Chrome? L'implementazione è diversa dalla specifica? Segnala un bug all'indirizzo new.crbug.com. Assicurati di includere il maggior numero di dettagli possibile, istruzioni semplici per la riproduzione e imposta i componenti su UI>Notifications.

Hai intenzione di utilizzare l'API?

Hai intenzione di utilizzare le condizioni di attivazione delle notifiche sul tuo sito? Il tuo supporto pubblico ci aiuta a dare la priorità alle funzionalità e mostra ad altri fornitori di browser quanto sia fondamentale supportarle. Invia un tweet a @ChromiumDev utilizzando l'hashtag #NotificationTriggers e facci sapere dove e come lo utilizzi.

Link utili

Ringraziamenti

I trigger di notifica sono stati implementati da Richard Knoll e la spiegazione è stata scritta da Peter Beverloo, con il contributo di Richard. Le seguenti persone hanno esaminato l'articolo: Joe Medley, Pete LePage, nonché Richard e Peter. Immagine promozionale di Lukas Blazek su Unsplash.