跳至主要内容

Notification

创建操作系统桌面通知

进程: 主进程

渲染器进程通知

如果想从渲染器进程显示通知,请使用 web Notifications API

类: Notification

创建操作系统桌面通知

进程: 主进程

Notification 是一个 EventEmitter.

它使用由 options 设置的本机属性创建一个新的 Notification

静态方法

Notification 类具有以下静态方法

Notification.isSupported()

返回 boolean - 当前系统是否支持桌面通知

new Notification([options])

  • options 对象(可选)
    • title 字符串(可选) - 通知标题,在通知窗口显示时将在顶部显示。
    • subtitle 字符串(可选) macOS - 通知副标题,将在标题下方显示。
    • body 字符串(可选) - 通知正文,将在标题或副标题下方显示。
    • silent 布尔值(可选) - 显示通知时是否抑制操作系统通知声音。
    • icon(字符串 | NativeImage)(可选) - 在通知中使用的图标。如果传递字符串,它必须是本地图标文件的有效路径。
    • hasReply 布尔值(可选) macOS - 是否在通知中添加内联回复选项。
    • timeoutType 字符串(可选) Linux Windows - 通知超时时间。可以是“default”或“never”。
    • replyPlaceholder 字符串(可选) macOS - 在内联回复输入字段中写入的占位符。
    • sound 字符串(可选) macOS - 显示通知时播放的声音文件名称。
    • urgency 字符串(可选) Linux - 通知紧急程度。可以是“normal”、“critical”或“low”。
    • actions NotificationAction[](可选) macOS - 要添加到通知的操作。请在 NotificationAction 文档中阅读可用的操作和限制。
    • closeButtonText 字符串(可选) macOS - 警报关闭按钮的自定义标题。空字符串将使用默认本地化文本。
    • toastXml 字符串(可选) Windows - Windows 上通知的自定义描述,取代以上所有属性。提供通知设计和行为的完全自定义。

实例事件

使用 new Notification 创建的对象会发出以下事件

信息

某些事件仅在特定操作系统上可用,并已标注。

事件: 'show'

返回

  • event 事件

通知显示给用户时发出。请注意,此事件可能会多次触发,因为通知可以通过 show() 方法多次显示。

事件: 'click'

返回

  • event 事件

用户单击通知时发出。

事件: 'close'

返回

  • event 事件

用户手动干预关闭通知时发出。

此事件不保证在所有通知关闭的情况下发出。

在 Windows 上,close 事件可以通过三种方式发出:使用 notification.close() 以编程方式关闭,由用户关闭通知,或通过系统超时。如果通知在初始 close 事件发出后在操作中心,则调用 notification.close() 将从操作中心删除通知,但 close 事件将不会再次发出。

事件: 'reply' macOS

返回

  • event 事件
  • reply 字符串 - 用户在内联回复字段中输入的字符串。

用户单击 hasReply: true 的通知上的“回复”按钮时发出。

事件: 'action' macOS

返回

  • event 事件
  • index 数字 - 激活操作的索引。

事件: 'failed' Windows

返回

  • event 事件
  • error 字符串 - 在执行 show() 方法期间遇到的错误。

创建和显示本机通知时遇到错误时发出。

实例方法

使用 new Notification() 构造函数创建的对象具有以下实例方法

notification.show()

立即将通知显示给用户。与 web 通知 API 不同,实例化 new Notification() 不会立即将其显示给用户。相反,您需要在操作系统显示之前调用此方法。

如果通知之前已经显示,此方法将关闭之前显示的通知,并使用相同的属性创建一个新的通知。

notification.close()

关闭通知。

在 Windows 上,在通知在屏幕上可见时调用 notification.close() 将关闭通知并将其从操作中心中删除。如果在通知不再在屏幕上可见时调用 notification.close(),则调用 notification.close() 将尝试将其从操作中心中删除。

实例属性

notification.title

一个 string 属性,表示通知的标题。

notification.subtitle

一个 string 属性,表示通知的副标题。

notification.body

一个 string 属性,表示通知的正文。

notification.replyPlaceholder

一个 string 属性,表示通知的回复占位符。

notification.sound

一个 string 属性,表示通知的声音。

notification.closeButtonText

一个 string 属性,表示通知的关闭按钮文本。

notification.silent

一个 boolean 属性,表示通知是否静音。

notification.hasReply

一个 boolean 属性,表示通知是否具有回复操作。

notification.urgency Linux

一个 string 属性,表示通知的紧急程度。可以是“normal”、“critical”或“low”。

默认值为 'low' - 更多信息请参考 NotifyUrgency

notification.timeoutType Linux Windows

一个表示通知超时类型(时长)的 string 属性。可以是 'default' 或 'never'。

如果 timeoutType 设置为 'never',通知将永远不会过期。它将一直保持打开状态,直到调用 API 或用户关闭。

notification.actions

一个表示通知操作的 NotificationAction[] 属性。

notification.toastXml Windows

一个表示通知的自定义 Toast XML 的 string 属性。

播放声音

在 macOS 上,您可以指定在显示通知时要播放的声音名称。除了自定义声音文件外,还可以使用任何默认声音(在系统偏好设置 > 声音下)。确保声音文件已复制到应用程序包(例如,YourApp.app/Contents/Resources),或以下位置之一

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

更多信息请参考 NSSound 文档。