Usa la API de Notifications

La API de browser.notifications te permite crear notificaciones con plantillas y mostrarlas a los usuarios en la bandeja del sistema:

Notificaciones en la bandeja del usuario del sistema

Cómo se ven

Las notificaciones enriquecidas se presentan en cuatro tipos diferentes: básicas, con imágenes, de lista y de progreso. Todas las notificaciones incluyen un título, un mensaje, un ícono pequeño que se muestra a la izquierda del mensaje de la notificación y un campo contextMessage, que se muestra como un tercer campo de texto en una fuente de color más claro.

Una notificación básica:

Notificación básica

Las notificaciones de lista muestran cualquier cantidad de elementos de la lista:

Notificación de lista

Las notificaciones de imágenes incluyen una vista previa de la imagen:

Notificación de imagen

Las notificaciones de progreso muestran una barra de progreso:

Notificación de progreso

Cómo se comportan

En ChromeOS, las notificaciones aparecen en la bandeja del sistema del usuario y permanecen allí hasta que el usuario las descarta. La bandeja del sistema mantiene un recuento de todas las notificaciones nuevas. Una vez que los usuarios ven las notificaciones en la bandeja del sistema, el recuento se restablece a cero.

A las notificaciones se les puede asignar una prioridad entre -2 y 2. Las prioridades inferiores a 0 se muestran en el centro de notificaciones de ChromeOS y producen un error en otras plataformas. La prioridad predeterminada es 0. Las prioridades superiores a 0 se muestran durante un período cada vez más largo, y se pueden mostrar más notificaciones de prioridad alta en la bandeja del sistema.

El parámetro de configuración priority no afecta el orden de las notificaciones en macOS.

Además de mostrar información, todos los tipos de notificaciones pueden incluir hasta dos elementos de acción. Cuando los usuarios hacen clic en un elemento de acción, tu extensión puede responder con la acción adecuada. Por ejemplo, cuando el usuario hace clic en Responder, se abre la app de correo electrónico y el usuario puede completar la respuesta:

Acción en la notificación

Cómo desarrollarlos

Para usar esta API, llama al método notifications.create() y pasa los detalles de la notificación con el parámetro options:

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

El objeto notifications.NotificationOptions debe incluir un objeto notifications.TemplateType, que define los detalles de notificación disponibles y cómo se muestran esos detalles.

Cómo crear una notificación básica

Todos los tipos de plantillas (basic, image, list y progress) deben incluir una notificación title y message, así como un iconUrl, que es un vínculo a un ícono pequeño que se muestra a la izquierda del mensaje de notificación.

Este es un ejemplo de una plantilla de basic:

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

Cómo usar una imagen

El tipo de plantilla image también incluye un imageUrl, que es un vínculo a una imagen que se muestra como vista previa dentro de la notificación. Ten en cuenta que las imágenes no se muestran a los usuarios en macOS.

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

Cómo crear una notificación de lista

La plantilla list muestra items en formato de lista. Ten en cuenta que solo se muestra el primer elemento a los usuarios de 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
}

Cómo detectar eventos y responder a ellos

Todas las notificaciones pueden incluir agentes de escucha y controladores de eventos que responden a las acciones del usuario (consulta browser.events). Por ejemplo, puedes escribir un controlador de eventos para responder a un evento notifications.onButtonClicked.

Objeto de escucha de eventos:

browser.notifications.onButtonClicked.addListener(replyBtnClick);

Controlador de eventos:

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

Considera incluir objetos de escucha y controladores de eventos en el service worker para que las notificaciones puedan aparecer incluso cuando la extensión no se esté ejecutando.