Cómo usar la API de Notifications

Ernest Delgado
Ernest Delgado

Introducción

La API de Notifications te permite mostrar notificaciones al usuario sobre eventos determinados, tanto de forma pasiva (correos electrónicos nuevos, tweets o eventos de calendario) como sobre interacciones del usuario, independientemente de la pestaña que esté enfocada. Hay un borrador de especificación, pero por el momento no se encuentra en ningún estándar.

Puedes seguir estos pasos sencillos para implementar notificaciones en solo unos minutos:

Paso 1: Verifica la compatibilidad con la API de Notifications

Verificamos si webkitNotifications es compatible. Ten en cuenta que el nombre de webkitNotifications se debe a que es parte de una especificación borrador. La especificación final tendrá una función notifications() en su lugar.

// check for notifications support
// you can omit the 'window' keyword
if (window.webkitNotifications) {
console.log("Notifications are supported!");
}
else {
console.log("Notifications are not supported for this Browser/OS version yet.");
}

Paso 2: Permite que el usuario otorgue permisos a un sitio web para que muestre notificaciones

Cualquiera de los constructores mencionados mostrará un error de seguridad si el usuario no otorgó permisos de forma manual al sitio web para mostrar notificaciones. Para manejar la excepción, puedes usar una sentencia try-catch, pero también puedes usar el método checkPermission para el mismo propósito.

document.querySelector('#show_button').addEventListener('click', function() {
if (window.webkitNotifications.checkPermission() == 0) { // 0 is PERMISSION_ALLOWED
// function defined in step 2
window.webkitNotifications.createNotification(
    'icon.png', 'Notification Title', 'Notification content...');
} else {
window.webkitNotifications.requestPermission();
}
}, false);

Si la aplicación web no tiene permiso para mostrar notificaciones, el método requestPermission mostrará una barra de información:

La barra de información del permiso de notificaciones en Google Chrome
La barra de información del permiso de notificaciones en Google Chrome

Sin embargo, es muy importante recordar que el método requestPermission solo funciona en controladores de eventos activados por una acción del usuario, como eventos del mouse o del teclado, para evitar barras de información no solicitadas. En este caso, la acción del usuario es hacer clic en el botón con el ID “show_button”. El fragmento anterior nunca funcionará si el usuario no ha hecho clic de manera explícita en un botón o vínculo que active requestPermission en algún momento.

Paso 3: Adjunta objetos de escucha y otras acciones

document.querySelector('#show_button').addEventListener('click', function() {
  if (window.webkitNotifications.checkPermission() == 0) { // 0 is PERMISSION_ALLOWED
    // function defined in step 2
    notification_test = window.webkitNotifications.createNotification(
      'icon.png', 'Notification Title', 'Notification content...');
    notification_test.ondisplay = function() { ... do something ... };
    notification_test.onclose = function() { ... do something else ... };
    notification_test.show();
  } else {
    window.webkitNotifications.requestPermission();
  }
}, false);

En este punto, es posible que desees encapsular todos estos eventos y acciones creando tu propia clase de notificación para mantener el código más limpio, aunque esto está fuera del alcance de este instructivo.