假设我想在每次发生事件时显示相同的通知。这就是我目前使用的:
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(){});
});
}