内容丰富的通知 API

平台差异:在 Chrome 59 版中,对于 Mac OS X 用户,通知的显示方式会有所不同。用户看到的不是 Chrome 自己的通知,而是原生 Mac OS X 通知。如需了解详情,请参阅这篇文章

借助 rich Notifications API,您可以使用模板创建通知并显示这些通知 通知:

系统用户任务栏中的通知

显示方式

内容丰富的通知有四种不同的类型:基本通知、图片通知、列表通知和进度通知。全部 通知包括标题、消息和显示在通知左侧的小图标 消息和一个 contextMessage 字段(以浅色字体显示为第三个文本字段)。

基本图片:

基本通知

列表通知会显示任意数量的列表项:

列表通知

图片通知包含图片预览:

图片通知

进度通知会显示进度条:

进度通知

行为方式

在 ChromeOS 中,通知会显示在用户的系统任务栏中,并且在系统任务栏中 用户将其关闭系统任务栏会保留所有新通知的计数。用户看到 通知,计数会重置为零。

可以为通知指定 -2 到 2 之间的优先级。优先级 <0 在 ChromeOS 中显示 并在其他平台上产生错误。优先级 0 是默认优先级。 优先级 >显示 0 以增加通知时长,并且可以显示更多高优先级通知 。

除了显示信息外,所有通知类型还可以包含最多两个操作项。 当用户点击待办项时,您的应用可以使用适当的操作作为响应。例如: 当用户点击“Reply”时,电子邮件应用会打开,并且用户可以完成回复:

通知中的操作

开发方法

要使用此 API,请调用 notifications.create 方法,并通过 options 参数:

chrome.notifications.create(id, options, creationCallback);

notifications.NotificationOptions 中必须包含 notifications.TemplateType, 定义了可用的通知详情以及这些详情的显示方式。

创建基本通知

所有模板类型(basicimagelistprogress)都必须包含通知 title,并且 message,以及 iconUrl(指向显示在 通知消息。

以下是 basic 模板的示例:

var opt = {
  type: "basic",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon"
}

创建图片通知

image 模板类型还包含 imageUrl,它是指向预览图片的链接 :

平台差异:对于在 Mac OS X 上使用 Chrome 59 或更高版本的用户,系统不会显示图片。
var opt = {
  type: "basic",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  imageUrl: "url_to_preview_image"
}

根据严格的内容安全政策,在 Chrome 应用中,这些网址必须指向本地 或者使用 blob 或 data 网址。为图片使用 3:2 的宽高比;否则为黑色边框 为图片添加边框。

创建列表通知

list 模板以列表格式显示 items

平台差异:对于 Mac OS X 上使用 Chrome 59 及更高版本的用户,系统只会显示第一个列表项。
var opt = {
  type: "list",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  items: [{ title: "Item1", message: "This is item 1."},
          { title: "Item2", message: "This is item 2."},
          { title: "Item3", message: "This is item 3."}]
}

创建进度通知

progress 模板会显示一个进度条,其中当前进度介于 0 到 100 之间:

平台差异:在 Mac OS X 上的 Chrome 59 或更高版本中,进度条会以百分比值的形式显示在通知标题中,而不是显示进度条。
var opt = {
  type: "progress",
  title: "Primary Title",
  message: "Primary message to display",
  iconUrl: "url_to_small_icon",
  progress: 42
}

监听和响应事件

所有通知都可以包含响应用户操作的事件监听器和事件处理程序(请参阅 chrome.events).例如,您可以编写一个事件处理脚本来响应 notifications.onButtonClicked 事件通知。

事件监听器:

chrome.notifications.onButtonClicked.addListener(replyBtnClick);

事件处理脚本:

function replyBtnClick {
    //Write function to respond to user action.
}

考虑在事件页面中添加事件监听器和处理脚本,以便在 即使应用或扩展程序未运行,Google Chrome 也会弹出窗口。