Notification.requestPermission()未请求权限

10

在这里输入图片描述

浏览器放弃询问通知的权限,默认情况下仅仅做出了决定。如何让它请求允许权限,以便我实际上可以接受通知呢?


我不能百分之百确定,但我认为这与拥有一个SW或清单有关。当我构建一个渐进式Web应用程序时,我遇到了这个问题,只有在安装后进入PWA时才会收到通知提示,但在Chrome上从未收到过。开发工具显示了你所经历的相同情况。 - undefined
3个回答

9

这个有效:

Notification.requestPermission().then(function(permission) { console.log('permiss', permission)});
< p > .then() 内的函数已经是由 requestPermission() 初始化的 promise 的解决处理程序。

浏览器会保存您对特定域的决策,并且不会再次询问您的权限。

如果要再次询问,您需要让它们忘记您上次的决定。以下是您可以在 Firefox 中执行此操作的方法:

enter image description here

删除此处的许可并重新加载页面,以便浏览器再次询问您。

哪个浏览器? - YetAnotherBot
这是Firefox浏览器。我刚试了一下,结果是:> Promise { <state>: "pending} \n permiss default. 没有任何关于通知权限的请求 :( - unixcorn
我刚试了一下。经过摸索,似乎浏览器会记住你的决定,并根据以前的决定来解决你的请求。 - YetAnotherBot
我也这么想,然后重置了 Firefox。即使那样也不行,所以我决定在 SO 上发帖寻求建议。有什么建议吗? - unixcorn
检查最新答案。 - YetAnotherBot
显示剩余2条评论

1

我相信你已经在then()函数内部解决了Promise。我通过删除window测试了你的示例,它对我有效。

Notification.requestPermission().then(function(getperm) 
{ 

    console.log('Perm granted', getperm) 

});

https://jsfiddle.net/freddyr0/x43j8tf5/


这个jsfiddle在chrome和firefox中肯定是有效的(这是为了一个firefox插件)。问题是,我的插件仍然没有发出请求。我去掉了'window',控制台甚至没有打印出'perm granted'。只有'Webconsole context has changed'。谢谢你的帮助。 - unixcorn
我刚刚尝试在“console.log('Perm granted',getperm)”之前添加另一个“console.log”语句。 这个“console.log”语句甚至没有被打印出来。 我觉得我根本没有进入函数。 - unixcorn

0

我在Android上的“Samsung Internet”应用程序(当前版本)中遇到了相同/类似的问题。 Notification.requestPermission() 返回default,但实际上没有显示提示。

这是我的确切情况:

  • 几个月前,我创建并发布了一个具有PWA功能的Web应用程序。在应用程序中,用户可以触发通知权限提示,并在接受权限提示时获得WebPush通知。
  • 我使用“Samsung Internet”应用程序在我的Android手机上安装了PWA,并触发/接受了通知权限提示。
  • 然后,我将Web应用程序移动到了新服务器。从那时起,Notification.requestPermission()返回default,但不再显示提示。

我的代码在Edge、Chrome和Firefox的桌面版本中按预期工作(即使将Web应用程序移动到新服务器),但在Android上的“Samsung Internet”应用程序中却没有。

根据我的理解,如果通知已经被接受,那么Notification.requestPermission()应该返回granted,当然不会显示提示。如果通知已经被拒绝,那么Notification.requestPermission()应该返回rejected,当然也不会显示提示。但是由于Notification.requestPermission()实际上返回了default(我在我的手机上验证过!),所以我希望在任何情况下都能显示提示。这个期望是正确的吗?还是我漏掉了什么?为什么在这种情况下我的手机没有显示提示? 2023年4月19日编辑: 在我完全卸载PWA并清除了“三星互联网”应用程序中的网站数据后重新安装PWA,它又可以正常工作了。但我仍然想知道为什么即使Notification.requestPermission()返回default,提示也没有显示...?

我有一个类似的问题,但是在Chrome(Android)上。Notification.requestPermission()永远没有解决并且一直处于挂起状态 - 实际上没有显示任何提示。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接