Utilizzare l'API Notifications

L'API chrome.notifications ti consente di creare notifiche utilizzando i modelli e di mostrare queste notifiche agli utenti nella barra delle applicazioni:

Notifiche nella barra degli utenti di sistema

Aspetto

Le notifiche avanzate sono disponibili in quattro tipi diversi: di base, immagine, elenco e avanzamento. Tutte le notifiche includono un titolo, un messaggio, una piccola icona visualizzata a sinistra del messaggio di notifica e un campo contextMessage, visualizzato come terzo campo di testo in un carattere di colore più chiaro.

Una notifica di base:

Notifica di base

Le notifiche dell'elenco mostrano un numero qualsiasi di voci dell'elenco:

Notifica elenco

Le notifiche relative alle immagini includono un'anteprima dell'immagine:

Notifica immagine

Le notifiche relative all'avanzamento mostrano una barra di avanzamento:

Notifica di avanzamento

Come si comporta

Su ChromeOS, le notifiche vengono visualizzate nella barra delle applicazioni dell'utente e rimangono nella barra delle applicazioni finché l'utente non le ignora. La barra delle applicazioni tiene un conteggio di tutte le nuove notifiche. Quando un utente visualizza le notifiche nella barra delle applicazioni, il conteggio viene reimpostato su zero.

Alle notifiche può essere assegnata una priorità compresa tra -2 e 2. Le priorità inferiori a 0 vengono mostrate nel Centro notifiche di ChromeOS e generano un errore su altre piattaforme. La priorità predefinita è 0. Le priorità maggiori di 0 vengono mostrate per aumentare la durata e nella barra delle applicazioni possono essere visualizzate più notifiche ad alta priorità.

L'impostazione priority non influisce sull'ordine delle notifiche su macOS.

Tutti i tipi di notifiche, oltre a visualizzare le informazioni, possono includere fino a due attività. Quando gli utenti fanno clic su un'attività, la tua estensione può rispondere con l'azione appropriata. Ad esempio, quando l'utente fa clic su Rispondi, si apre l'app email e l'utente può completare la risposta:

Azione nella notifica

Come svilupparle

Per utilizzare questa API, chiama il metodo notifications.create(), trasmettendo i dettagli della notifica utilizzando il parametro options:

await chrome.notifications.create(id, options);

L'elemento notifications.NotificationOptions deve includere un elemento notifications.TemplateType, che definisce i dettagli di notifica disponibili e la modalità di visualizzazione di tali dettagli.

Creare una notifica di base

Tutti i tipi di modello (basic, image, list e progress) devono includere una notifica title e message, nonché un iconUrl, che è un link a una piccola icona visualizzata a sinistra del messaggio di notifica.

Ecco un esempio di modello basic:

var opt = {
  type: "basic",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon"
}

Utilizza un'immagine

Il tipo di modello image include anche un imageUrl, ovvero un link a un'immagine visualizzata in anteprima all'interno della notifica. Tieni presente che le immagini non vengono mostrate agli utenti su macOS.

var opt = {
  type: "image",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  imageUrl: "url_to_preview_image"
}

Crea una notifica relativa a un elenco

Il modello list mostra items in formato elenco. Tieni presente che solo il primo elemento viene mostrato agli utenti su macOS.

var opt = {
  type: "list",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  items: [{ title: "Item1", message: "This is item 1."},
          { title: "Item2", message: "This is item 2."},
          { title: "Item3", message: "This is item 3."}]
}```

### Create progress notification {: #progress }

The `progress` template displays a progress bar where current progress ranges from 0 to 100. On macOS the progress bar displays as a percentage value in the notification title instead of in the progress bar.

```js
var opt = {
  type: "progress",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  progress: 42
}

Ascoltare e rispondere agli eventi

Tutte le notifiche possono includere listener di eventi e gestori di eventi che rispondono alle azioni degli utenti (vedi chrome.events). Ad esempio, puoi scrivere un gestore di eventi per rispondere a un evento notifications.onButtonClicked.

Listener di eventi:

chrome.notifications.onButtonClicked.addListener(replyBtnClick);

Gestore di eventi:

function replyBtnClick {
    //Write function to respond to user action.
}

Potresti includere listener e gestori di eventi all'interno del service worker, in modo che le notifiche possano apparire anche quando l'estensione non è in esecuzione.