从 Chrome 59 开始,通过 Notifications API 或 chrome.notifications extensions API 发送的通知将直接由 macOS 原生通知系统(而非 Chrome 自己的系统)显示。
这一变更让 macOS 上的 Chrome 更好地与平台集成,并修复了许多长期存在的错误,例如 Chrome 不遵循系统的“勿扰”设置。
下面我们来看看此变更对现有 API 带来的差异。
通知中心
这项变更的一项好处是,通知将显示在 macOS 的通知中心中。
不同点
图标大小和位置
图标的外观将发生变化。它们的尺寸更小,并且采用了内边距。为了美观,您可能需要考虑改用透明背景图标(而非纯色)。
操作图标
在此次变更之前,通知中会显示操作按钮和图标。对于原生通知,系统不会使用操作按钮图标,并且用户需要将鼠标悬停在通知上,然后选择“更多”按钮,即可查看可执行的操作。
Chrome 徽标
Chrome 徽标会始终显示,且无法替换或更改。这是对 macOS 上的第三方应用的一项要求。
图像
macOS 将不再支持 image
选项。如果您定义了图片属性,系统仍会显示通知,但会忽略图片参数(请参阅下面的示例)。
您可以使用以下代码对图片进行功能检测支持:
if ('image' in Notification.prototype) {
// Image is supported.
} else {
// Image is NOT supported.
}
Chrome 扩展程序变更
Chrome 扩展程序具有通知模板的概念,其行为方式与此变更有所不同。
图片通知模板将不再显示该图片。您应确保这些映像是补充性的,并非对用户有用的。
列表通知模板只会显示列表中的第一项。您可能需要考虑恢复为基本通知样式,并使用正文文本来总结这组更改。
进度通知会在通知标题中附加百分比值(而不是进度条)来指示进度。
通知界面的最后一个区别是,在 macOS 上,appIconMarkUrl
将不再使用。