【问题标题】:How to listen for web notification permission change如何监听网络通知权限变化
【发布时间】:2016-05-15 01:33:19
【问题描述】:

根据 MDN 的 Notification.permission 规范,我们可以检查当前用户对 Web 通知的权限。

但是,有什么方法可以监听此权限更改?像这样?

.on(Notification.permission, 'changed', function(){ }

【问题讨论】:

    标签: javascript web permissions notifications listener


    【解决方案1】:

    我相信现在回答有点晚了,但是……你可以用这个。

    var Notification = window.Notification || window.mozNotification || window.webkitNotification;
    
    var was_questioned = false;
    if (Notification.permission == 'default') {
        was_questioned = true;
    }
    
    Notification.requestPermission(function (permission) {
        if (was_questioned) {
            console.log("User was asked. New permission is: " + permission);
        }
        if ('permissions' in navigator) {
        navigator.permissions.query({name:'notifications'}).then(function(notificationPerm) {
            notificationPerm.onchange = function() {
                console.log("User decided to change his seettings. New permission: " + notificationPerm.state);
            };
        });
        }
    });
    

    【讨论】:

      【解决方案2】:

      你只需要

      if ('permissions' in navigator) {
        navigator.permissions.query({ name: 'notifications' }).then(function (notificationPerm) {
          notificationPerm.onchange = function () {
            console.log("User decided to change his seettings. New permission: " + notificationPerm.state);
          };
        });
      }
      

      【讨论】:

      • 几天前赞成这个答案,一切正常,但由于某种原因,它现在在 FF 中不起作用,事件不会触发。控制台中没有任何内容。铬没问题。
      • 更新:不适用于本地,但适用于生产 oO
      • 这种方式行不通,如果用户连续多次关闭原生通知提示,浏览器将权限改为“拒绝”,但监听器无法处理
      • 我认为应该注意的是,这是使用Permissions API,这是一个工作草案。
      • @teran 您可能需要本地环境中的 ssl 证书,因为它仅适用于 secure context
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-02
      • 2011-03-08
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多