Почему `chrome .notifications.update` обновляется только один раз на Windows 10? - PullRequest
0 голосов
/ 19 апреля 2020

Я разрабатываю расширение chrome, которое запускает обратный отсчет 3 секунды с помощью уведомлений. Он работает путем создания начального уведомления «запись за 3 секунды» и последующего обновления этого уведомления каждую секунду:

background-script. js

const waitForMs = (ms) => new Promise(r => setTimeout(r, ms))

const displayNotification = (message, updateNotificationId = undefined, expireInMs = undefined) => new Promise(
  (resolve) => {
    const notificationOptions = {
      type: 'basic',
      iconUrl: 'icon.png', // required
      title: message,
      message,

      // Avoids sounds and vibrations
      silent: true,

      // Required to have notification update in real-time
      requireInteraction: true
    }

    // Resolves with given notification id, possibly after clearing after timeout
    const resolveWithId = async (id) => {
      if (typeof expireInMs === 'number') {
        await waitForMs(expireInMs)
        chrome.notifications.clear(id)
      }

      resolve(id)
    }

    // Update if notification id is defined
    // Otherwise create a new notification
    if (typeof updateNotificationId === 'string') {
      chrome.notifications.update(
        updateNotificationId,
        notificationOptions,
        (updated) => {
          console.log(`updated? ${updated}`)

          resolveWithId(updateNotificationId)
        }
      )
    }
    else {
      chrome.notifications.create(
        notificationOptions,
        (id) => resolveWithId(id)
      )
    }
  }
)

chrome.browserAction.onClicked.addListener(() => {
  chrome.notifications.getPermissionLevel(async (permissionLevel) => {
    console.log(`permissionLevel: ${permissionLevel}`)

    if (permissionLevel === 'granted') {
      const notificationId = await displayNotification('Recording in 3...')
      await waitForMs(1000)

      await displayNotification('Recording in 2...', notificationId)
      await waitForMs(1000)

      await displayNotification('Recording in 1...', notificationId)
      await waitForMs(1000)

      await displayNotification('Now recording!', notificationId, 3000)
    }
  })
})

манифест. json:

{
  "name": "NotificationExample",
  "short_name": "NotificationExample",
  "version": "1.0.0",
  "manifest_version": 2,
  "description": "",
  "background": {
    "scripts": [
      "background-script.js"
    ],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Notification Countdown Example"
  },
  "permissions": [
    "notifications"
  ]
}

Однако, , как вы видите на этом экране записи , на Windows 10 уведомление успешно обновляется только один раз ( от 3 до 2 секунд) и не обновляет 3-й или 4-й раз. На MacOS это работает. Почему это не работает на Windows 10 и как это можно решить?

...