【发布时间】:2018-11-03 18:25:31
【问题描述】:
我已经创建了网络推送通知,它们在 Firefox 中正常工作(服务工作者已注册,订阅已创建,订阅数据已存储,使用订阅数据通知已发送正常)。我在 Chrome 和 Opera 中尝试过相同的方法,但没有任何反应。我尝试调试,发送推送通知后,浏览器收到它,执行代码,但没有任何反应。没有错误,代码运行到最后。 Service Worker 代码如下:
'use strict';
self.addEventListener('push', function(event) {
console.log('Push started');
const promiseChain = self.registration.showNotification('Hello, World.');
event.waitUntil(promiseChain);
console.log('Push finished');
});
我在控制台中看到“推送开始”和“推送完成”。服务器使用 https。有什么想法,有什么问题?
【问题讨论】:
-
我不知道它在 Firefox 中是如何工作的,所以我可能听起来很愚蠢,但是您是否记得向用户请求允许向他们发送通知? developers.google.com/web/fundamentals/codelabs/…
-
是的,我在订阅前请求允许发送通知。当我检查权限时,它显示允许通知。可能那是因为我在网页中请求许可,而不是在服务人员中。它是这样发生的: function askp() { return new Promise(function(resolve, reject) { const permissionResult = Notification.requestPermission(function(result) { resolve(result); }); if (permissionResult) { permissionResult.then(解决, 拒绝); } }) .then(function(permissionResult) { // 获取订阅 }); }
标签: javascript google-chrome web-push