Javascript Chrome通知API(用于扩展!)一旦被阻止如何重新启用?

Javascript Chrome通知API(用于扩展!)一旦被阻止如何重新启用?,javascript,google-chrome,google-chrome-extension,google-chrome-app,Javascript,Google Chrome,Google Chrome Extension,Google Chrome App,我已经花了相当多的时间研究这个问题,希望我刚刚错过了一些东西,所以我想我也会从StackExchange社区中找到它 背景: 在最新的Chrome>65上,所有通知都是基于每个站点的存储,因此,如果一个人要为某个站点授予或拒绝通知弹出窗口,并希望撤销该决定(例如意外单击“阻止”),他们只需进入Chrome通知设置,找到特定站点,然后删除该阻止。这与今天的设计一样有效,并且有很好的文档记录 下面是一个场景中的问题细节: 现在,完全相同的机制用于扩展。扩展最初被授予它所需的所有权限并正常工作。然后,

我已经花了相当多的时间研究这个问题,希望我刚刚错过了一些东西,所以我想我也会从StackExchange社区中找到它

背景:

在最新的Chrome>65上,所有通知都是基于每个站点的存储,因此,如果一个人要为某个站点授予或拒绝通知弹出窗口,并希望撤销该决定(例如意外单击“阻止”),他们只需进入Chrome通知设置,找到特定站点,然后删除该阻止。这与今天的设计一样有效,并且有很好的文档记录

下面是一个场景中的问题细节:

现在,完全相同的机制用于扩展。扩展最初被授予它所需的所有权限并正常工作。然后,用户使用通知上的“齿轮”齿轮图标,在扩展的单个桌面通知上意外单击“阻止”一次,然后将通知气球更改为此提示:

现在,任何扩展尝试发送通知消息,而不是正常的桌面通知,一个丑陋的JavaScript通知在屏幕中间弹出(与完全相同的通知文本),以及两个按钮-“OK”和“取消”。如果单击“确定”,则所有扩展功能都将保持不变。例如,如果用户单击了先前的桌面通知气球弹出窗口,则会触发相同的功能

下面是使用流行的Tampermonkey Chrome扩展(使用随机选择的带有已知更新的脚本)的两个屏幕截图,该扩展使用桌面通知API传递脚本更新:

具有默认授予权限的“正常”桌面通知消息:

一旦用户单击“阻止”撤销该权限,将显示完全相同的消息(显示在屏幕中央)**注意,实际的消息本身没有被阻止,我觉得很奇怪,只是桌面通知GUI气泡:

因此,问题实际上有两个方面:

  • Chrome在哪里存储扩展的PermissionLevel的布尔值?因为它们不会出现在授权/阻止站点的正常列表中。如果不在用户界面中,该设置是否在配置文件中公开,或者在Chrome>65中是否有任何方法可供用户撤销该决定

  • 是否有一种编程方法可以由扩展开发人员在后端实现,以检查是否发生了这种情况,并重新提示用户改变主意并重新授予该权限?我在这里发现了一些非官方的帖子,说“常识说不”,以避免恶意骚扰用户等。但我找不到任何官方的帖子


  • 好吧,我可以确认,在作为正式的Chromium bug打开后,它正在等待分类,显然没有当前的解决方法:

    我还做了进一步的测试,以确定您可以使用扩展中的ID并将其添加到“站点”设置中,该设置也基于该行为,似乎是另一个错误,因为一些设置未保存,没有任何设置具有预期效果,等等

    我将于2018年9月4日将此作为当前答案发布:

    “一旦被阻止,就无法为特定扩展重新启用Chrome桌面通知”


    如果有人可以在此发布一个成功的解决方案,在用户单击“阻止来自此应用的所有通知”后,以任何方式重新启用扩展的正常桌面通知(使用Tampermonkey测试)简单地撤销这个决定会很好,但我认为只要这个问题没有得到回答,我就会倾向于相信根本没有当前的方法,这只是一个(明显的)UI错误。

    不幸的是撤销这个决定的唯一方法是删除扩展并重新安装它

    这个问题已经公开近半年了。在这一点上,不期望很快会有修复


    如果您受到此问题的影响,请在上面的链接上标记此问题。

    我已尝试通过该链接阻止使用chrome.notifications API的扩展chrome://settings 页面,但我没有看到它被应用:无论如何,通知都会显示出来。但它总是不受这项政策的约束。从这个角度来看,它只能通过大师来阻止。我不理解你的评论。上面的屏幕截图是从真实的系统中拍摄的,显示了封锁发生的情况,效果绝对真实。在该系统上,根本无法为该扩展重新启用桌面通知。所以,问题是,一旦被阻止,似乎就没有办法专门针对暴露于解除阻止的扩展/应用程序,除非您可以将我指向缺少的配置文件或GUI设置?蒂亚!我还使用两个新标志对此进行了测试:#启用消息中心新样式通知和#启用本机通知,这对为扩展重新启用被阻止/拒绝的桌面通知的方式没有任何影响。我所说的标准UI通知根本没有阻止/取消阻止功能。只有通过显式启用新样式通知,我才能看到它chrome://flags/#enable-消息中心新样式通知。因为这是实验性的,我猜他们只是没有完全实现这个特性。非常感谢您深入了解代码!我已经在谷歌群组中交叉发布了这篇文章,也没有一个解决方案,所以听起来我们是正确的,我继续在上打开了一个Chromium的问题:让任何其他经历过这一问题的人在那里明星/评论,希望至少能得到分配!不过,我将把它放在这里,只是欢迎和S.O.解决方案的想法,同时也帮助引导其他受影响的人解决适当的问题。