Saltar al contenido principal

Notification

Crea las notificaciones de escritorio del sistema operativo

Proceso: principal

[!NOTE] If you want to show notifications from a renderer process you should use the web Notifications API

[!NOTE] On MacOS, notifications use the UNNotification API as their underlying framework. This API requires an application to be code-signed in order for notifications to appear. Unsigned binaries will emit a failed event when notifications are called.

Clase: Notification

Crea las notificaciones de escritorio del sistema operativo

Proceso: principal

Notification es un EventEmitter.

Crea una nueva Notification con propiedades nativas como las configuradas por options.

[!WARNING] Electron's built-in classes cannot be subclassed in user code. For more information, see the FAQ.

Métodos Estáticos

La clase Notification tiene los siguientes métodos estáticos:

Notification.isSupported()

Devuelve boolean - Si las notificaciones de escritorio son soportadas o no en el sistema actual

Notification.handleActivation(callback) Windows

Registers a callback to handle all notification activations. The callback is invoked whenever a notification is clicked, replied to, or has an action button pressed - regardless of whether the original Notification object is still in memory.

This method handles timing automatically:

  • If an activation already occurred before calling this method, the callback is invoked immediately with those details.
  • For all subsequent activations, the callback is invoked when they occur.

The callback remains registered until replaced by another call to handleActivation.

This provides a centralized way to handle notification interactions that works in all scenarios:

  • Cold start (app launched from notification click)
  • Notifications persisted in AC that have no in-memory representation after app re-start
  • Notification object was garbage collected
  • Notification object is still in memory (callback is invoked in addition to instance events)
const { Notification, app } = require('electron')

app.whenReady().then(() => {
// Register handler for all notification activations
Notification.handleActivation((details) => {
console.log('Notification activated:', details.type)
if (details.type === 'reply') {
console.log('User reply:', details.reply)
} else if (details.type === 'action') {
console.log('Action index:', details.actionIndex)
}
})
})

Notification.getHistory() macOS

Returns Promise<Notification[]> - Resolves with an array of Notification objects representing all delivered notifications still present in Notification Center.

Each returned Notification is a live object connected to the corresponding delivered notification. Interaction events (click, reply, action, close) will fire on these objects when the user interacts with the notification in Notification Center. This is useful after an app restart to re-attach event handlers to notifications from a previous session.

The returned notifications have their id, groupId, title, subtitle, and body properties populated from information available in the Notification Center. Other properties (e.g., actions, silent, icon) are not available from delivered notifications and will have default values.

[!NOTE] Like all macOS notification APIs, this method requires the application to be code-signed. In unsigned development builds, notifications are not delivered to Notification Center and this method will resolve with an empty array.

[!NOTE] Unlike notifications created with new Notification(), notifications returned by getHistory() will remain visible in Notification Center when the object is garbage collected. Calling show() on a restored notification will remove the original from Notification Center and post a new one with the same properties.

const { Notification, app } = require('electron')

app.whenReady().then(async () => {
// Restore notifications from a previous session
const notifications = await Notification.getHistory()
for (const n of notifications) {
console.log(`Found delivered notification: ${n.id} - ${n.title}`)
n.on('click', () => {
console.log(`User clicked: ${n.id}`)
})
n.on('reply', (event) => {
console.log(`User replied to ${n.id}: ${event.reply}`)
})
}
// Keep references so events continue to fire
})

Notification.remove(id) macOS

  • id (string | string[]) - The notification identifier(s) to remove. These correspond to the id values set in the Notification constructor.

Removes one or more delivered notifications from Notification Center by their identifier(s).

const { Notification } = require('electron')

// Remove a single notification
Notification.remove('my-notification-id')

// Remove multiple notifications
Notification.remove(['msg-1', 'msg-2', 'msg-3'])

Notification.removeAll() macOS

Removes all of the app's delivered notifications from Notification Center.

const { Notification } = require('electron')

Notification.removeAll()

Notification.removeGroup(groupId) macOS

  • groupId string - The group identifier of the notifications to remove. This corresponds to the groupId value set in the Notification constructor.

Removes all delivered notifications with the given groupId from Notification Center.

const { Notification } = require('electron')

// Remove all notifications in the 'chat-thread-1' group
Notification.removeGroup('chat-thread-1')

new Notification([options])

  • options Object (opcional)
    • id string (optional) macOS Windows - A unique identifier for the notification. On macOS, maps to UNNotificationRequest's identifier property. On Windows, maps to the toast notification's Tag property. Defaults to a random UUID if not provided or if an empty string is passed. Use this identifier with Notification.remove() to remove specific delivered notifications, or with Notification.getHistory() to identify them.
    • groupId string (optional) macOS Windows - A string identifier used to visually group notifications together in Notification Center / Action Center. On macOS, maps to UNNotificationContent's threadIdentifier property. On Windows, maps to the toast notification's Group property. Use this identifier with Notification.removeGroup() to remove all notifications in a group.
    • groupTitle string (optional) Windows - A title for the notification group header. When both groupId and groupTitle are specified, Windows will display a header above the notification that groups related notifications together. Maps to the toast notification's header element.
    • title string (optional) - A title for the notification, which will be displayed at the top of the notification window when it is shown.
    • subtitle string (opcional) macOS - Un subtítulo para la notificación, la cual aparecerá debajo del título.
    • body string (opcional) - El texto del cuerpo de la notificación, el cual será mostrado debajo del título o del subtítulo.
    • silent boolean (optional) - Whether or not to suppress the OS notification noise when showing the notification.
    • icon (string | NativeImage) (optional) - An icon to use in the notification. If a string is passed, it must be a valid path to a local icon file.
    • hasReply boolean (optional) macOS Windows - Whether or not to add an inline reply option to the notification.
    • timeoutType string (opcional) Linux Windows - La duración del tiempo de espera de la notificación. Puede ser 'default' o 'never'.
    • replyPlaceholder string (optional) macOS Windows - The placeholder to write in the inline reply input field.
    • sound string (opcional) macOS - El nombre del archivo de sonido que se reproduce cuando se muestra la notificación.
    • urgency string (optional) Linux Windows - The urgency level of the notification. Puede ser 'normal', 'critical', o 'low'.
    • actions NotificationAction[] (optional) macOS Windows - Actions to add to the notification. Por favor lea las acciones disponibles y limitaciones en la documentación de NotificationAction.
    • closeButtonText string (opcional) macOS - Un título personalizado para el botón cerrar de una alerta. Una cadena vacía hará que se utilice el texto localizado predeterminado.
    • toastXml string (opcional) Windows - Una descripción personalizada de la notificación en Windows sustituyendo todas las propiedades anteriores. Ofrece una personalización completa del diseño y el comportamiento de la notificación.

[!NOTE] On Windows, urgency type 'critical' sorts the notification higher in Action Center (above default priority notifications), but does not prevent auto-dismissal. To prevent auto-dismissal, you should also set timeoutType to 'never'.

Eventos de Instancia

Los objetos creados con new Notification emite los siguientes eventos:

info

Some events are only available on specific operating systems and are labeled as such.

Evento: "show"

Devuelve:

  • event Event

Emitted when the notification is shown to the user. Note that this event can be fired multiple times as a notification can be shown multiple times through the show() method.

const { Notification, app } = require('electron')

app.whenReady().then(() => {
const n = new Notification({
title: 'Title!',
subtitle: 'Subtitle!',
body: 'Body!'
})

n.on('show', () => console.log('Notification shown!'))

n.show()
})

Evento: "click"

Devuelve:

  • event Event

Se emite cuando el usuario hace clic en la notificación.

const { Notification, app } = require('electron')

app.whenReady().then(() => {
const n = new Notification({
title: 'Title!',
subtitle: 'Subtitle!',
body: 'Body!'
})

n.on('click', () => console.log('Notification clicked!'))

n.show()
})

Evento: "close"

Devuelve:

  • details Event<>
    • reason Windows string (optional) - The reason the notification was closed. This can be 'userCanceled', 'applicationHidden', or 'timedOut'.

Se emite cuando se cierra la notificación por medio de la intervención manual del usuario.

No se garantiza que este evento se emita en todos los casos donde se cierre la notificación.

On Windows, the close event can be emitted in one of three ways: programmatic dismissal with notification.close(), by the user closing the notification, or via system timeout. If a notification is in the Action Center after the initial close event is emitted, a call to notification.close() will remove the notification from the action center but the close event will not be emitted again.

const { Notification, app } = require('electron')

app.whenReady().then(() => {
const n = new Notification({
title: 'Title!',
subtitle: 'Subtitle!',
body: 'Body!'
})

n.on('close', () => console.log('Notification closed!'))

n.show()
})

Event: 'reply' macOS Windows

Devuelve:

  • details Event<>
    • reply string - La cadena que ingreso el usuario dentro del campo de respuesta insertado.
  • reply string Deprecated

Se emite cuando el usuario hace clic en el botón "Reply" en una notificación con hasReply: true.

const { Notification, app } = require('electron')

app.whenReady().then(() => {
const n = new Notification({
title: 'Send a Message',
body: 'Body Text',
hasReply: true,
replyPlaceholder: 'Message text...'
})

n.on('reply', (e, reply) => console.log(`User replied: ${reply}`))
n.on('click', () => console.log('Notification clicked'))

n.show()
})

Event: 'action' macOS Windows

Devuelve:

  • details Event<>
    • actionIndex númerp - El indice de la acción que fue activado.
    • selectionIndex number Windows - The index of the selected item, if one was chosen. -1 if none was chosen.
  • actionIndex number Deprecated
  • selectionIndex number Windows Deprecated
const { Notification, app } = require('electron')

app.whenReady().then(() => {
const items = ['One', 'Two', 'Three']
const n = new Notification({
title: 'Choose an Action!',
actions: [
{ type: 'button', text: 'Action 1' },
{ type: 'button', text: 'Action 2' },
{ type: 'selection', text: 'Apply', items }
]
})

n.on('click', () => console.log('Notification clicked'))
n.on('action', (e) => {
console.log(`User triggered action at index: ${e.actionIndex}`)
if (e.selectionIndex > -1) {
console.log(`User chose selection item '${items[e.selectionIndex]}'`)
}
})

n.show()
})

Event: 'failed' macOS Windows

Devuelve:

  • event Event
  • error string - El error encontrado durante la ejecución del método show().

Se emite cuando un error ocurre mientras se esta creando y mostrando una notificación nativa.

const { Notification, app } = require('electron')

app.whenReady().then(() => {
const n = new Notification({
title: 'Bad Action'
})

n.on('failed', (e, err) => {
console.log('Notification failed: ', err)
})

n.show()
})

Métodos de Instancia

Objects created with the new Notification() constructor have the following instance methods:

notification.show()

Immediately shows the notification to the user. Unlike the web notification API, instantiating a new Notification() does not immediately show it to the user. Instead, you need to call this method before the OS will display it.

Si la notificación ha sido mostrada con anterioridad, este método descartará la notificación previa y creará una nueva con propiedades idénticas.

On macOS, calling show() on a notification returned by Notification.getHistory() will remove the original notification from Notification Center and post a new one with the same properties.

const { Notification, app } = require('electron')

app.whenReady().then(() => {
const n = new Notification({
title: 'Title!',
subtitle: 'Subtitle!',
body: 'Body!'
})

n.show()
})

notification.close()

Descarta la notificación.

On Windows, calling notification.close() while the notification is visible on screen will dismiss the notification and remove it from the Action Center. If notification.close() is called after the notification is no longer visible on screen, calling notification.close() will try remove it from the Action Center.

const { Notification, app } = require('electron')

app.whenReady().then(() => {
const n = new Notification({
title: 'Title!',
subtitle: 'Subtitle!',
body: 'Body!'
})

n.show()

setTimeout(() => n.close(), 5000)
})

Propiedades de la instancia

notification.id macOS Windows Readonly

A string property representing the unique identifier of the notification. This is set at construction time — either from the id option or as a generated UUID if none was provided.

notification.groupId macOS Windows Readonly

A string property representing the group identifier of the notification. Notifications with the same groupId will be visually grouped together in Notification Center (macOS) or Action Center (Windows).

notification.groupTitle Windows Readonly

A string property representing the title of the notification group header.

notification.title

Una propiedad string que representa el título de la notificación.

notification.subtitle

Una propiedad string que representa el subtítulo de la notificación.

notification.body

Una propiedad string que representa el cuerpo de la notificación.

notification.replyPlaceholder

Una propiedad string que representa el marcador de respuesta de la notificación.

notification.sound

Una propiedad string que representa el sonido de la notificación.

notification.closeButtonText

Una propiedad string que representa el texto del botón cerrar en la notificación.

notification.silent

Una propiedad boolean que representa si la notificación es silenciosa.

notification.hasReply

Una propiedad boolean que representa si al notificación tiene a una acción de respuesta.

notification.urgency Linux

Un propiedad string que representa el nivel de prioridad de la notificación. Puede ser 'normal', 'critical', o 'low'.

Default is 'low' - see NotifyUrgency for more information.

notification.timeoutType Linux Windows

Una propiedad string que representa el tipo de tiempo de espera para la notificación. Puede ser 'default' o 'never'.

Si timeoutType es especificado como 'never', la notificación nunca expirará. Se queda abierta hasta que se cierra por el llamado de la API o del usuario.

notification.actions

A NotificationAction[] property representing the actions of the notification.

notification.toastXml Windows

Una propiedad string que representa el Toast XML de la notificación.

Reproducción de Sonidos

En macOS, se puede especificar el nombre del sonido que se desee reproducir cuando se muestre la notificación. Cualquier sonido por defecto (en Preferencias del sistema > Sonido) pueden ser usados en adición a los sonidos personalizados del sistema. Asegúrese de que el archivo de sonido sea copiado en el paquete de la aplicación (por ejemplo, YourApp.app/Contents/Resources), o uno de los siguientes direcciones:

  • ~/Library/Sounds
  • /Library/Sounds
  • /Network/Library/Sounds
  • /System/Library/Sounds

See the NSSound docs for more information.