假设提醒产品在首页打开时就请求通知权限,用户点了允许,设置页便显示“提醒已开启”。之后一次提醒没出现,用户很难知道是浏览器权限、产品订阅,还是实际发送出了问题。
MDN 文档说明 requestPermission 返回 granted、denied 或 default,default 应按未获得许可处理;它也提示安全上下文、浏览器支持和用户交互等约束。得到 granted 只说明浏览器通知权限这一环有相应许可,不能把它直接当作未来每条提醒都已送达的证明。
我建议把产品设置拆成用户能理解的几项:想订阅什么事件、在哪些时间接收、使用什么渠道,以及当前渠道是否具备必要权限。例如用户愿意接收自己关注项目的更新,不等于愿意接收所有营销活动。浏览器的允许按钮没有替产品完成这些偏好选择。
请求权限可以放在有明确目的的操作后,比如用户点击“为这个任务开启浏览器提醒”。先说明通知内容和关闭方式,再触发权限请求。拒绝后尊重选择,给出仍可使用的站内查看路径;不要在每次进入页面时重新制造压力。具体允许怎样再次申请,需要按目标浏览器实测。
测试可以分为四个状态:尚未选择、明确拒绝、已经允许、当前环境不支持。对每个状态检查产品设置是否如实显示,并验证用户更改浏览器权限以后页面怎样更新。不能因为数据库里曾经记过 granted,就永久认定当前设备仍然有权限。
再单独做一条假提醒的端到端验收,区分计划创建、发送尝试、渠道接受与终端展示;不同方案未必能观察全部环节,无法观察的部分就保留未知。特别是后台推送,还涉及超出本文 permission API 的订阅与服务端设计,应查对应实现文档,不从这一页资料推导完整投递保证。
设置页文案可以具体写成“浏览器已允许通知;已订阅任务截止提醒”,而不是笼统承诺“绝不会错过”。若提供测试通知,应说明它只验证当前时刻和环境。把许可、偏好与投递结果分开,用户出现问题时才有可操作的排查入口。
资料:MDN Notification.requestPermission;页面标注更新 2025-06-11。查阅日期:2026-11-05(Asia/Shanghai)。
来源:https://developer.mozilla.org/en-US/docs/Web/API/Notification/requestPermission_static