在Chrome中显示推送消息

时间:2019-03-04 07:12:03

标签: javascript reactjs service-worker

我想使用服务人员显示推送通知。在开发人员工具->应用程序->服务人员中,我得到了测试文本"a": "test message",按下此按钮会出现以下错误:

serviceWorker.js:48 Uncaught (in promise) TypeError: Failed to execute 
'showNotification' on 'ServiceWorkerRegistration': No notification 
permission has been granted for this origin. 

我该如何解决?当您单击按钮时,通知会弹出吗?

2 个答案:

答案 0 :(得分:0)

对于Push消息,您需要两个API的设置 Notification API Push API 。 首先,请征求客户的许可以进行通知。除非获得批准,否则没有任何效果。因此,在您的index.js / App.js中放置以下代码段:-

function askForNPerm() {
  Notification.requestPermission(function(result) {
    console.log("User choice", result);
    if (result !== "granted") {
      console.log("No notification permission granted!");
    } else {
      configurePushSub();// Write your custom function that pushes your message
    }
  });
}

一旦获得许可,就调用具有消息显示功能的Push函数。

答案 1 :(得分:0)

这是工作。您还需要检查浏览器是否具有权限。

 self.addEventListener('push', (event) => {
    const options = {
        body: 'This notification was generated from a push!',
        icon: '',
        data: {
            dateOfArrival: Date.now(),
            primaryKey: '2'
        },
        actions: [
            {
                action: 'explore', title: 'Explore this new world',
                icon: ''
            },
            {
                action: 'close', title: 'Close',
                icon: ''
            },
        ]
    };
    event.waitUntil(
        self.registration.showNotification('Title', options)
    )
    });