丰富的通知

您可以使用丰富的通知 API 使用模板创建通知,并在系统托盘中向用户展现这些通知。

Notifications in system user tray

外观

丰富的通知包含四种风格:基本(basic)、图片(image)、列表(list)和进度条(progress)。所有通知都包含标题(title)、消息(message)、通知消息左侧显示的小图标以及 contextMessage 字段,以浅色字体显示为第三文本域。

基本通知:

Basic notification

显示项目列表的列表通知:

List notification

包含图片预览的图片通知:

Image notification

显示进度条的进度条通知:

Progress notification

行为

通知显示在用户的系统托盘中,在用户关闭它们之前保留在系统托盘中。在大部分平台上,有新通知时铃铛图标就会点亮。在 Chrome OS 上,系统托盘显示所有新通知的数目,用户查看系统托盘中的通知后,通知数目重置为零。

您可以为通知分配优先级,范围在 -2 到 2 之间。优先级小于 0 的通知仅在通知中心显示,优先级大于 0 的通知显示的时间更长,更高优先级的通知可以在系统托盘中显示。

除了显示信息外,所有通知类型都能包含操作项,最多两个。当用户单击操作项时,应用可以进行相应的动作。例如,当用户单击“回复”时,电子邮件应用打开,用户可以完成回复:

Action in notification

如何开发

使用该 API 时,只要调用 notifications.create 方法,通过 options 参数传递通知详情:

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

notifications.NotificationOptions 必须包含 notifications.TemplateType,定义可用的通知详情以及如何显示它们。

请考虑与 GCM 的集成!
随时通知用户,即使您的应用没有打开。gcm-notifications 示例演示了 GCM 和丰富的通知 API 之间的简单集成。

创建基本通知

所有模板类型(basicimagelistprogress)都必须包含通知的标题(title)、消息(message)和图标 URL(iconUrl,显示在通知消息左侧的小图标链接)。

如下是 basic(基本)模板的示例:

var opt = {
  type: "basic",
  title: "主要标题",
  message: "要显示的主要消息",
  iconUrl: "url_to_small_icon"
}

创建图片通知

image(图片)模板类型还包含 imageUrl 属性,表示通知中预览的图片链接。

var opt = {
  type: "basic",
  title: "主要标题",
  message: "要显示的主要消息",
  iconUrl: "url_to_small_icon",
  imageUrl: "url_to_preview_image"
}

在 Chrome 应用中,由于严格的内容安全策略,这些 URL 必须指向本地资源或使用 blob 或 data URL。请使用尺寸比例为 3:2 的图片,否则图片周围会有黑色边框。

创建列表通知

list(列表)模板以列表的形式显示 items

var opt = {
  type: "list",
  title: "主要标题",
  message: "要显示的主要消息",
  iconUrl: "url_to_small_icon",
  items: [{ title: "项目 1", message: "这是项目 1。"},
          { title: "项目 2", message: "这是项目 2。"},
          { title: "项目 3", message: "这是项目 3。"}]
}

创建进度条通知

progress 模板显示进度条,其中当前进度的范围从 0 到 100 变化:

var opt = {
  type: "progress",
  title: "主要标题",
  message: "要显示的主要消息",
  iconUrl: "url_to_small_icon",
  progress: 42
}

监听和响应事件

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

事件监听器:

chrome.notifications.onButtonClicked.addListener(replyBtnClick);

事件处理程序:

function replyBtnClick {
	// 编写函数响应用户操作。
}

请将事件监听器和处理程序放在在事件页面中,这样即使应用或扩展程序不在运行时也能弹出通知。