如何监听网络通知权限变化
Posted
技术标签:
【中文标题】如何监听网络通知权限变化【英文标题】:How to listen for web notification permission change 【发布时间】:2016-05-15 01:33:19 【问题描述】:根据 MDN 的 Notification.permission 规范,我们可以检查当前用户对 Web 通知的权限。
但是,有什么方法可以监听此权限更改?像这样?
.on(Notification.permission, 'changed', function()
【问题讨论】:
【参考方案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。以上是关于如何监听网络通知权限变化的主要内容,如果未能解决你的问题,请参考以下文章