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时未弹出提示的原因。
问题解答
你的预期是正确的:
Notification.requestPermission()返回default时,浏览器理应弹出权限请求框,这个状态的定义就是用户尚未对通知权限做出明确选择。异常原因分析
- 三星互联网浏览器对PWA权限的存储与站点的
origin(域名/服务器标识)强绑定; - 原服务器安装的PWA已授权通知权限,浏览器会将该权限记录与原站点
origin关联; - 迁移到新服务器后,站点
origin变更,但三星浏览器未正确处理跨origin的PWA权限迁移,误将新站点的权限状态标记为default,同时因旧PWA的残留缓存数据限制了弹窗触发——这属于浏览器自身的兼容性bug,主流桌面浏览器在权限隔离和状态同步上的逻辑更严谨,因此未出现问题。
- 三星互联网浏览器对PWA权限的存储与站点的
卸载重装恢复正常的原因
完全卸载PWA并清除浏览器站点数据,会彻底删除原服务器站点的所有权限记录和PWA缓存文件,新服务器的PWA会被当作全新站点处理,权限状态回到初始可弹窗状态,因此恢复正常。
内容的提问来源于stack exchange,提问作者TOG
相关产品推荐
相关产品推荐

