Chrome扩展程序通知并非始终创建 - 重用?

时间:2014-10-24 22:14:44

标签: javascript google-chrome google-chrome-extension

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

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创建了一个{{1}},但也没有解决它。

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

2 个答案:

答案 0 :(得分:4)

id函数中的create专门用于重用。 ID必须是唯一的。如果您将create与现有通知的ID一起使用,则它基本上就像更新一样。

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

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

但是,如果您确实要重复使用该ID(确保通知是唯一的),您可以使用priority trick重新显示该信息。

答案 1 :(得分:3)

如果通知不可用,您可以清除通知,如果您想使用相同的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(){});

}

现在每次调用通知功能显示通知时,它都会在显示新通知之前清除旧通知并显示。

<强>已更新

正如@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(){});
  });
}
相关问题