使用新的chrome.notifications
API,我无法从我的扩展程序中收到通知。即使是最基本的通知也不会出现,但我没有错误,并且回调函数已正确执行。
{
"name": "notify",
"version": "0.0.0",
"manifest_version": 2,
"permissions": [
"notifications"
],
"background": {
"scripts": ["main.js"]
}
}
window.addEventListener('load', function() {
var opt = {
type: 'list',
title: 'Primary Title',
message: 'Primary message to display',
priority: 1,
items: [{ title: 'Item1', message: 'This is item 1.'},
{ title: 'Item2', message: 'This is item 2.'},
{ title: 'Item3', message: 'This is item 3.'}]
};
chrome.notifications.create('notify1', opt, function() { console.log('created!'); });
});
当我检查背景页面时,我可以看到“已创建!”在控制台中,但我从未在桌面上收到通知。我尝试了一堆不同的优先级值无济于事。我做错了什么?
答案 0 :(得分:14)
不幸的是,由于我还没有诊断出来的错误,chrome.notifications的详细错误消息已从控制台中删除;您的通知未显示的原因是它未提供必需的“iconUrl”参数。当我在已安装的扩展程序的后台页面中尝试以下操作时:
var opt = {
iconUrl: "http://www.google.com/favicon.ico",
type: 'list',
title: 'Primary Title',
message: 'Primary message to display',
priority: 1,
items: [{ title: 'Item1', message: 'This is item 1.'},
{ title: 'Item2', message: 'This is item 2.'},
{ title: 'Item3', message: 'This is item 3.'}]
};
chrome.notifications.create('notify1', opt, function() { console.log('created!'); });
通知已成功创建。检查chrome.runtime.lastError:
是值得的var opt = {
type: 'list',
title: 'Primary Title',
message: 'Primary message to display',
priority: 1,
items: [{ title: 'Item1', message: 'This is item 1.'},
{ title: 'Item2', message: 'This is item 2.'},
{ title: 'Item3', message: 'This is item 3.'}]
};
chrome.notifications.create('notify1', opt, function(id) { console.log("Last error:", chrome.runtime.lastError); });
它会告诉你实际上有必需的属性而且缺少一个属性。
答案 1 :(得分:4)
如果您使用的是Mac和Chrome 59+,则可能是因为Chrome禁用了MacOS本机通知。这是两种可能的解决方案:
打开Chrome>转到chrome://flags
>搜索Enable native notifications
>更改为Disabled
>重新启动Chrome
转到“ MacOS系统偏好设置”>“通知”>如下图所示打开横幅/警报通知(可能以前是“关闭”)
Notifications Setting Screenshot
答案 2 :(得分:0)
就我而言,Chrome对于已传递的特定名称/ ID仅会显示一次通知。作为解决方法,我在名称后加上了当前的DateTime以使其唯一。
chrome.notifications.create(`my-notification-${Date.now()}`, {
type: "basic",
iconUrl: "icons/logo.png",
title: "My Title",
message: "My Message",
});
答案 3 :(得分:0)
使用: chrome.runtime.lastError - 将其添加到回调中(参见示例)
注意: 你必须有 iconUrl 图标 URL 路径(如果与您的清单相关)
chrome.notifications.create(`my-notification-${Date.now()}`, {
iconUrl: "assets/images/1.png",
type: "basic",
contextMessage: "contextMessage",
message: "message",
title: "title"
}, function(context) {
console.log("Last error:", chrome.runtime.lastError);
alert(JSON.stringify( chrome.runtime.lastError));
});