Chrome扩展通知只显示一次

3

我的目标是创建一个Chrome扩展程序,在Firebase的值发生变化时发送通知。
使用以下代码,第一次更改值时我会收到通知,但后续更改却没有收到。

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);
  });
});

有什么解决方案吗?
2个回答

8

由于您使用了固定的通知ID,因此更新而不是创建新的通知。

如果通知没有关闭但在Chrome通知中心中隐藏,它将不会再次显示。

您的选项包括:

  • 不使用固定ID(将""作为ID传递)
    这将导致旧通知和新通知都保留直到被解除。可能不是您想要的。

  • 在显示新通知之前关闭旧通知
    这个方法很有效,但如果旧通知尚未消失,则会给人视觉上的冲击。但是,如果您想强调“这是新信息”,则实际上可能需要这种效果。

  • 使用优先级更改技巧重新显示通知
    这个方法最好,但有些“hacky”。我们只能希望Chrome API会改进以本地执行此操作。


1
你还可以添加时间戳后缀,以使每个通知都不同:
var timestamp = new Date().getTime();
var id = 'myid' + timestamp;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接