API de notificaciones enriquecidas

Diferencia de plataforma: En la versión 59 de Chrome, las notificaciones aparecen de manera diferente para los usuarios de Mac OS X. En lugar de las propias notificaciones de Chrome, los usuarios ven notificaciones nativas de Mac OS X. Obtén más información en este artículo.

La API de notificaciones enriquecidas te permite crear notificaciones mediante plantillas y mostrarlas a los usuarios en la bandeja del sistema del usuario:

Notificaciones en la bandeja de usuario del sistema

Cómo se ven

Las notificaciones enriquecidas tienen cuatro variantes diferentes: básica, de imagen, 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 notificación y un campo contextMessage, que se muestra como un tercer campo de texto con una fuente de color más claro.

Una imagen básica:

Notificación básica

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

Notificación de lista

Las notificaciones de imagen 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 descarte. La bandeja del sistema registra todas las notificaciones nuevas. Una vez que un usuario ve las notificaciones en la bandeja del sistema, el recuento se restablece a cero.

A las notificaciones se les puede asignar una prioridad de -2 a 2. Las prioridades < 0 se muestran en el centro de notificaciones de ChromeOS y producen un error en otras plataformas. La prioridad 0 es la predeterminada. Las prioridades > 0 se muestran para el aumento de la duración, y se pueden mostrar más notificaciones de prioridad alta en la bandeja del sistema.

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 app 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 notificación

Cómo desarrollarlas

Para usar esta API, llama al método notifications.create y pasa los detalles de la notificación a través del parámetro options:

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

Las notifications.NotificationOptions deben incluir un notifications.TemplateType, que define los detalles de las notificaciones disponibles y cómo se muestran.

Crear 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 basic:

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

Notificación de creación de imagen

El tipo de plantilla image también incluye un imageUrl, que es un vínculo a una imagen de la que se obtiene una vista previa en la notificación:

Diferencia de plataforma: Las imágenes no se mostrarán a los usuarios que usen Chrome 59 o versiones posteriores en Mac OS X.
var opt = {
  type: "basic",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  imageUrl: "url_to_preview_image"
}

En las Apps de Chrome, debido a una Política de Seguridad del Contenido estricta, estas URLs deben apuntar a un recurso local o usar un BLOB o URL de datos. Usa una relación de aspecto de 3:2 para tu imagen; de lo contrario, un borde negro enmarca la imagen.

Notificación de creación de lista

La plantilla list muestra items en formato de lista:

Diferencia de plataforma: Solo se muestra el primer elemento de la lista a los usuarios que tengan la versión 59 de Chrome o superior en Mac OS X.
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."}]
}

Notificación de progreso de creación

La plantilla progress muestra una barra de progreso en la que el progreso actual varía de 0 a 100:

Diferencia de plataforma: En la versión 59 de Chrome y en Mac OS X, la barra de progreso se muestra como un valor porcentual en el título de la notificación en lugar de mostrar una barra de progreso.
var opt = {
  type: "progress",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  progress: 42
}

Cómo escuchar eventos y responder a ellos

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

Objeto de escucha de eventos:

chrome.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 la página del evento para que las notificaciones puedan aparecer, incluso cuando la app o extensión no se esté ejecutando.