0Pricing
React Academy · Lección

Notifications API y gestión de permisos

Solicitar permisos de notificación en el momento adecuado y enviar notificaciones del navegador desde React

Notifications API y gestión de permisos es una lección gratuita de React Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

Propiedad Notification.permission

Notification.permission es una cadena estática que refleja el estado actual del permiso. Puede ser "granted" (el usuario lo permitió), "denied" (el usuario lo bloqueó) o "default" (nunca se ha solicitado). Compruebe esta propiedad antes de intentar mostrar notificaciones para evitar errores innecesarios.

Solicitud de permiso

Notification.requestPermission() devuelve una Promise que se resuelve con la nueva cadena de permiso. Llámela únicamente como respuesta a una acción clara del usuario, no al cargar la página. Los navegadores ignoran o suprimen las solicitudes de permiso que se muestran inmediatamente al cargar la página, y a los usuarios les resultan molestas cuando aparecen sin contexto.

Práctica recomendada: solicitarlo tras una acción del usuario

El patrón más eficaz consiste en mostrar un aviso dentro de la aplicación que explique la ventaja y, a continuación, permitir que el usuario haga clic en "Activar notificaciones" antes de llamar a requestPermission(). Esto proporciona contexto, aumenta las tasas de aceptación y evita que el navegador marque su sitio como abusivo. Nunca solicite permiso al cargar la página.

Creación de una notificación

new Notification(title, options) crea y muestra una notificación del sistema. El primer argumento es la cadena del título. El objeto options es el segundo argumento y acepta propiedades como body (texto del subtítulo), icon (URL de la imagen) y tag para evitar duplicados. Esto solo funciona si el permiso es "granted".

Opciones de las notificaciones

Entre las opciones principales de las notificaciones se incluyen: body para el texto descriptivo situado debajo del título, icon para una imagen pequeña, badge para el pequeño icono monocromático que se muestra en el área de notificaciones del sistema operativo, image para una imagen grande integrada, tag para reemplazar una notificación anterior con la misma etiqueta y requireInteraction: true para mantener la notificación hasta que el usuario interactúe con ella.

Eventos de las notificaciones

La instancia de Notification activa varios eventos: onclick se activa cuando el usuario hace clic en la notificación (utilícelo para enfocar la ventana y navegar), onclose se activa cuando se descarta y onerror se activa si se produce un problema al crearla. Asocie los controladores a la instancia devuelta después de llamar a new Notification().

Cierre programático de las notificaciones

Guarde la instancia de Notification devuelta en una variable y llame a notification.close() para descartarla mediante programación. Esto resulta útil para las notificaciones urgentes que dejan de ser relevantes después de un tiempo. Combínelo con setTimeout para cerrarla automáticamente después de unos segundos.

Requisito de HTTPS para las notificaciones

La API de notificaciones requiere un contexto seguro. En páginas HTTP, typeof Notification === 'undefined' devuelve ese valor o la API se desactiva por completo, según el navegador. Se trata de una medida de seguridad para evitar que los sitios maliciosos inunden a los usuarios con mensajes de sistema falsos. Compruebe siempre que esté disponible antes de utilizarla.

Creación del hook useNotifications

Un hook useNotifications puede exponer dos métodos: requestPermission() y showNotification(title, options). Internamente, realiza un seguimiento del estado actual del permiso y lo actualiza después de solicitarlo. Los componentes llaman a showNotification sin preocuparse por comprobar los permisos, ya que el hook se encarga de ello internamente.

Combinación con la API de visibilidad

La API de visibilidad de páginas expone document.hidden y el evento visibilitychange. Las notificaciones tienen más sentido cuando el usuario no está viendo la pestaña en ese momento. Compruebe document.hidden === true antes de mostrar una notificación para evitar alertas redundantes cuando la página ya está en primer plano.

Service Workers y notificaciones push

La API de notificaciones que se muestra aquí sirve para las notificaciones activadas localmente desde la propia página. Para recibir notificaciones push incluso cuando la página está cerrada, necesita la Push API combinada con un service worker. El service worker recibe el evento push y llama a self.registration.showNotification() en segundo plano.

Valores de Notification.permission

¿Cuál de los siguientes NO es un valor válido para Notification.permission?

Resumen de la lección: API de notificaciones

Notification.permission puede ser granted, denied o default. Solicite siempre el permiso tras una acción del usuario, no al cargar la página. Utilice new Notification(title, options) para crear notificaciones y gestione onclick para enfocar la ventana. Combine esta API con la API de visibilidad para mostrar notificaciones solo cuando la pestaña esté oculta.

Preguntas frecuentes

¿La lección «Notifications API y gestión de permisos» es gratis?

Sí — el texto completo de «Notifications API y gestión de permisos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Notifications API y gestión de permisos»?

Solicitar permisos de notificación en el momento adecuado y enviar notificaciones del navegador desde React Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Notifications API y gestión de permisos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Clipboard API: copiar y pegar en React
  2. Geolocation API en componentes de React
  3. Notifications API y gestión de permisos
  4. IntersectionObserver para efectos activados por el desplazamiento
← Volver a React Academy