我的目标是在firebase中的值更改时使用Chrome扩展程序创建通知 使用下面的代码,我会在第一次更改值时收到通知,但不是以下时间。
f.on('child_changed', function (snapshot) {
ignoreInitialData = false;
var options = {
type: 'basic',
iconUrl: '../../icons/green.png',
title: "Availability notifier",
message: snapshot.val(),
contextMessage: "",
eventTime: Date.now(),
isClickable: false,
};
chrome.notifications.create("child_changed", options, function (notificationID) {
console.error(chrome.runtime.lastError);
});
});
任何解决方案?
答案 0 :(得分:6)
由于您使用的是固定通知ID,因此已更新,而非创建新通知ID。
如果通知未关闭但隐藏在Chrome通知中心,则 将再次显示。
您的选择包括:
未使用固定ID(将""
作为ID传递)
这将导致旧通知和新通知都被保留,直到被解雇。可能不是你想要的。
Closing the old notification就在展示一个新的之前 这种方法效果很好,但如果您的旧通知尚未消失,则会产生视觉冲突。但是,如果你想强调一下,你可能真的想要这个效果"这是新信息"
使用priority change trick to re-show the notification。
这效果最好,但是" hacky"。我们只希望Chrome API能够改进本地化。
答案 1 :(得分:1)
您还可以添加时间戳后缀,以便每个通知都不同:
var timestamp = new Date().getTime();
var id = 'myid' + timestamp;