You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android三星浏览器中Notification.requestPermission()返回default无弹窗问题

三星互联网浏览器中Notification.requestPermission()返回default却不弹窗的问题

问题背景

在安卓系统的三星互联网浏览器(当前版本)中,调用Notification.requestPermission()返回default,但实际并未弹出权限提示框,具体场景如下:

  • 数月前开发并发布了一款支持PWA的Web应用,用户可触发通知权限提示,接受后能接收WebPush通知;
  • 通过三星互联网浏览器安装该PWA并接受了通知权限;
  • 将Web应用迁移至新服务器后,调用Notification.requestPermission()返回default,但不再弹出提示框;
  • 代码在Edge、Chrome和Firefox桌面版中运行正常,仅安卓三星互联网浏览器出现问题。

核心疑问

按标准权限逻辑:

  • 权限已接受时,Notification.requestPermission()应返回granted且不弹窗;
  • 权限已拒绝时,返回rejected且不弹窗;
  • 返回default代表用户未做出选择,应弹出提示框。

此预期是否正确?为何迁移服务器后三星浏览器返回default却不弹窗?

补充信息

2023年4月19日补充:完全卸载PWA并清除三星互联网浏览器的网站数据后重新安装,问题恢复正常,但仍疑惑返回default时未弹出提示的原因。


问题解答

  1. 你的预期是正确的:Notification.requestPermission()返回default时,浏览器理应弹出权限请求框,这个状态的定义就是用户尚未对通知权限做出明确选择。

  2. 异常原因分析

    • 三星互联网浏览器对PWA权限的存储与站点的origin(域名/服务器标识)强绑定;
    • 原服务器安装的PWA已授权通知权限,浏览器会将该权限记录与原站点origin关联;
    • 迁移到新服务器后,站点origin变更,但三星浏览器未正确处理跨origin的PWA权限迁移,误将新站点的权限状态标记为default,同时因旧PWA的残留缓存数据限制了弹窗触发——这属于浏览器自身的兼容性bug,主流桌面浏览器在权限隔离和状态同步上的逻辑更严谨,因此未出现问题。
  3. 卸载重装恢复正常的原因
    完全卸载PWA并清除浏览器站点数据,会彻底删除原服务器站点的所有权限记录和PWA缓存文件,新服务器的PWA会被当作全新站点处理,权限状态回到初始可弹窗状态,因此恢复正常。


内容的提问来源于stack exchange,提问作者TOG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:53:11