Chrome 如何捕获禁用Web推送通知?

mpgws1up  于 2022-12-06  发布在  Go
关注(0)|答案(2)|浏览(177)

我如何用serviceworker或简单的js代码捕捉,当用户谁以前允许为我的网站的网页推送通知禁用它们?对于Firefox和Chrome浏览器.

bqf10yzr

bqf10yzr1#

您可以使用Permissions API来检测给定权限的当前状态,以及侦听更改。
This article有更多的细节。

navigator.permissions.query({name: 'push'}).then(function(status) {
  // Initial permission status is `status.state`

  status.onchange = function() {  
    // Status changed to `this.state`
  };
});
0yycz8jy

0yycz8jy2#

您可以尝试以下操作:

navigator.permissions.query({name:'notifications'}).then(function(status) {
        //alert(status.state); // status.state == { "prompt", "granted", "denied" }
        status.onchange = function() {
            if(this.state=="denied" || this.state=="prompt"){ push_unsubscribe(); }
        };
    });

或以下内容:

navigator.permissions.query({name:'push', userVisibleOnly:true}).then(function(status) {
        //alert(status.state); // status.state == { "prompt", "granted", "denied" }
        status.onchange = function() {
            if(this.state=="denied" || this.state=="prompt"){ push_unsubscribe(); }
        };
    });

我用它向服务器发送用户已取消或禁用通知的信息。请注意,如果用户在网站设置中这样做,则不会执行该代码。

相关问题