notifications.update()

更新通知,指定其 ID。

这是一个异步函数,它返回一个 Promise

语法

js
let updating = browser.notifications.update(
  id,                            // string
  options                        // NotificationOptions
)

参数

id

string. 要更新的通知的 ID。这与传递给 notifications.create() 回调的 ID 相同。

options

notifications.NotificationOptions. 定义通知的新内容和行为。

返回值

一个 Promise,它将用布尔值来实现:如果通知已更新,则为 true,如果未更新,则为 false(例如,因为 id 引用的通知不存在)。

浏览器兼容性

BCD 表格仅在浏览器中加载

示例

此示例使用 update() 更新进度通知。单击浏览器操作将显示通知并启动一个 alarm,我们使用它来更新通知的进度指示器。

请注意,您需要“alarms” 权限 才能创建警报(以及“notifications”权限才能创建通知)。另请注意,Firefox 不支持 progress 属性。

js
let cakeNotification = "cake-notification";

/*

CAKE_INTERVAL is set to 0.3 seconds in this example.
Such a short period is chosen to make the extension's behavior
more obvious, but this is not recommended in real life.
Note that in Chrome, alarms cannot be set for less than
a minute.

*/
let CAKE_PREP_INTERVAL = 0.005;

let progress = 0;

browser.alarms.onAlarm.addListener((alarm) => {
  progress += 10;
  if (progress > 100) {
    browser.notifications.clear(cakeNotification);
    browser.alarms.clear("cake-progress");
  } else {
    browser.notifications.update(cakeNotification, { progress });
  }
});

browser.browserAction.onClicked.addListener(() => {
  browser.notifications.getAll((all) => {
    if (all.length > 0) {
      browser.notifications.clear(cakeNotification);
      return;
    }
    progress = 0;
    browser.notifications.create(cakeNotification, {
      type: "progress",
      iconUrl: browser.extension.getURL("icons/cake-48.png"),
      title: "Your cake is being prepared…",
      message: "Something something cake",
      progress,
    });
    browser.alarms.create("cake-progress", {
      periodInMinutes: CAKE_PREP_INTERVAL,
    });
  });
});

注意: 此 API 基于 Chromium 的 chrome.notifications API。