navigator.serviceWorker.register('/service-worker.js').then((reg) => {
})
Notification.requestPermission(function(result) {
console.log('User Choice', result);
if (result !== 'granted') {
console.log('No notification permission granted!');
} else {
navigator.serviceWorker.ready
.then(function(swreg) {
console.log("blaxblux");
swreg.showNotification('Successfully subscribed!', {body:'TEST'});
});
}
});
这是我在main.js
中的代码
它涉及console.log('blaxblux')
,但根本不显示通知。浏览器显示带有允许按钮的弹出窗口时,请求权限起作用。
可能是什么问题?
(我正在使用最新版的chrome)
答案 0 :(得分:5)
我遇到了类似的问题,但是在Windows计算机上关闭了Google Chrome浏览器的通知。我继续并启用了通知,然后它们开始神奇地工作。
Settings -> System -> Notifications & Actions
向下滚动到“从这些发件人获取通知”部分,然后将“ Google Chrome”(或您的首选浏览器)设置为“开”
答案 1 :(得分:1)
用于获取许可的API最近已从进行回调更改 返回承诺。问题在于,我们无法分辨 当前浏览器实现了什么版本的API,因此您 必须既实现又处理。
function askPermission() {
return new Promise(function(resolve, reject) {
const permissionResult = Notification.requestPermission(function(result) {
resolve(result);
});
if (permissionResult) {
permissionResult.then(resolve, reject);
}
})
.then(function(permissionResult) {
if (permissionResult !== 'granted') {
throw new Error('We weren\'t granted permission.');
}
});
}