我花了相当多的时间对此进行研究,希望我只是错过了一些东西,所以我想我也会从 StackExchange 社区反弹它。
背景:
在最新的 Chrome > 65 上,所有通知都存储在每个站点的基础上,因此如果一个人要批准或拒绝站点的通知弹出窗口并想要撤销该决定(例如不小心点击了“阻止” ) 他们可以简单地进入 Chrome 通知设置,找到该特定站点,然后删除阻止。这按今天的设计工作并且有详细记录。
下面是场景中的问题详细信息:
现在,完全相同的机制用于扩展。扩展最初被授予所有必需的权限并正常工作。然后,用户使用通知上的“齿轮”齿轮图标不小心在来自扩展程序的单个桌面通知上单击了一次“阻止”,然后将通知气球更改为此提示:
现在,任何时候该扩展试图发送一条通知消息,而不是普通的桌面通知,屏幕中间会弹出一个丑陋的 javascript 通知(具有完全相同的通知文本)和两个按钮 - “OK ”和“取消”。例如,如果单击“确定”,则所有扩展功能都不会发生变化,就像用户单击之前的桌面通知气球弹出窗口一样,将触发完全相同的功能。
下面是使用流行的 Tampermonkey Chrome 扩展程序(使用随机选择的脚本和已知更新)的确切场景的两个屏幕截图,该扩展程序使用桌面通知 API 来传达脚本更新:
具有默认授予权限的“普通”桌面通知消息:
一旦用户单击“阻止”撤销该权限,就会出现完全相同的消息(出现在屏幕中央)。 **注意实际消息本身并没有被阻止,我觉得这很奇怪,只是桌面通知 GUI 气泡:
所以,这个问题实际上有两个方面:
Chrome 在哪里存储 PermissionLevel 的 bool 值 FOR EXTENSIONS - 因为它们不会出现在正常的授权/阻止站点列表中。如果不在 UI 中,此设置是否显示在配置文件中,或者目前在 Chrome>65 中是否有任何方法供用户撤销此决定?
是否有一种编程方法可以由后端的扩展开发人员实现,以检查是否发生这种情况并重新提示用户改变主意并重新授予该权限?我在这里发现了一些非官方的帖子,说常识说不,以避免恶意骚扰用户等。但我找不到任何官方的帖子。
最佳答案
好吧,我可以在将其作为官方 Chromium 错误打开后确认,它正在等待分类并且显然目前没有解决方法:
https://bugs.chromium.org/p/chromium/issues/detail?id=825497
我还做了进一步的测试以确定您可以使用扩展中的 ID 并将其添加到“站点”设置中,这也是基于该行为,由于某些设置未保存而似乎是另一个错误,没有一个具有预期的效果等
截至 2018 年 4 月 9 日,我会将此作为当前答案发布:
“一旦被阻止,就不可能为特定扩展重新启用 Chrome 桌面通知”。
如果有人可以在这里发布一个成功的解决方法,在用户单击“阻止来自该应用程序的所有通知”后,以任何方式重新启用扩展的正常桌面通知(使用 Tampermonkey 测试)以简单地撤销将很棒,但我认为只要这个问题仍然没有得到解答,我就会倾向于相信根本没有当前的方法,它只是一个(明显的)UI 错误。
关于javascript - Chrome Notification API(用于扩展!)如何在被阻止后重新启用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49465326/