Javascript chrome中的Web推送通知
我已经创建了web推送通知,它们在Firefox中工作正常(service worker已注册,订阅已创建,订阅数据已存储,使用订阅数据通知已发送正常)。我在Chrome和Opera中也尝试过同样的方法,但什么都没有发生。我试着调试,在我发送推送通知后,浏览器接收它,执行代码,但什么也没发生。没有错误,代码一直运行到最后。服务人员代码如下所示:Javascript chrome中的Web推送通知,javascript,google-chrome,web-push,Javascript,Google Chrome,Web Push,我已经创建了web推送通知,它们在Firefox中工作正常(service worker已注册,订阅已创建,订阅数据已存储,使用订阅数据通知已发送正常)。我在Chrome和Opera中也尝试过同样的方法,但什么都没有发生。我试着调试,在我发送推送通知后,浏览器接收它,执行代码,但什么也没发生。没有错误,代码一直运行到最后。服务人员代码如下所示: 'use strict'; self.addEventListener('push', function(event) { console.log(
'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。有什么想法,有什么不对劲吗?假设您有一个没有https的开发域。Google Chrome仅在使用配置的SSL运行时发送通知 如何绕过:对于本地开发,您可以使用
不安全地将不安全的源代码视为安全的选项启动Chrome
open -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--args \
--user-data-dir=$HOME \
--unsafely-treat-insecure-origin-as-secure=http://your-insecure-domain.dev \
我已经在我的应用程序中配置了SSL,并使用https运行它。直到我在chrome中没有收到任何通知,而是在firefox和edge中收到任何通知。我不知道它在firefox中是如何工作的,所以我可能听起来很愚蠢,但你记得向用户请求发送通知的权限吗?是的,我请求在订阅之前发送通知。当我检查权限时,它显示允许通知。可能是因为我在网页中请求权限,而不是在服务人员中请求权限。它是这样发生的:函数askp(){返回新承诺(函数(解析,拒绝){const permissionResult=Notification.requestPermission(函数(result){resolve(result);});if(permissionResult){permissionResult.then(解析,拒绝);})。然后(函数(permissionResult){//get subscription}); }