Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript chrome中的Web推送通知_Javascript_Google Chrome_Web Push - Fatal编程技术网

Javascript chrome中的Web推送通知

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(

我已经创建了web推送通知,它们在Firefox中工作正常(service worker已注册,订阅已创建,订阅数据已存储,使用订阅数据通知已发送正常)。我在Chrome和Opera中也尝试过同样的方法,但什么都没有发生。我试着调试,在我发送推送通知后,浏览器接收它,执行代码,但什么也没发生。没有错误,代码一直运行到最后。服务人员代码如下所示:

'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}); }