Chrome扩展通知并非总是创建的-重复使用

Chrome Extension Notifications Not Always Created - Reuse?

本文关键字:-重 创建 通知 扩展 Chrome      更新时间:2023-09-26

假设我想在每次发生事件时显示相同的通知。这就是我目前使用的:

chrome.notifications.create(id, {   
                type:"basic",
                title:"Title",
                message:"My message",
                iconUrl: "icon.png",
            }, notificationResult);

但有时通知不会出现。

这是id吗?我需要重复使用已经创建的通知吗?我可以不创建具有相同id的新通知吗?

我试着做var notification = chrome.notifications.create(id .... )notification.show(),以防我已经用相同的id创建了一个,但这也没有解决问题

那么,每次我想显示相同的通知时,我是否需要重新创建一个现有的通知(目前对我不起作用),或者有不同的方法吗?如何确保它每次都弹出?

create函数中的id专门用于重用。ID必须是唯一的。如果将create与现有通知的ID一起使用,它的行为基本上类似于更新。

如果存在通知,则该通知可能不再显示,而只能在消息中心中显示。在这种情况下,会更新通知,但不会再次显示。

API文档指定,您可以将空字符串传递给通知,以获得唯一的新id。如果需要,它将传递给回调。

但如果您确实想重用ID(确保通知是唯一的),您可以使用优先级技巧使其再次显示。

如果不使用通知,并且您想使用相同的id,则可以清除通知。

例如:

function Notify(){
var my_notif_id="some_id";
//This will clear your previous notifcation with the same ID 
chrome.notifications.clear(my_notif_id,function(){});
chrome.notifications.create(my_notif_id,options,function(){});
}

现在,每次调用notification函数来显示通知时,它都会在显示新通知之前清除旧通知并显示出来。

更新

正如@Xan所建议的,在clear()的回调函数中包含create()方法是很好的下面是一个完整的例子:

function Notify(id, options){
  //This will clear your previous notifcation with the same ID 
  chrome.notifications.clear(id, function() {
    //inside callback function
    chrome.notifications.create(id, options, function(){});
  });
}