无后端create-react-app可否基于自身逻辑触发推送通知?
Web端离线推送通知实现方案
Web端支持浏览器未聚焦、甚至关闭状态下接收通知的能力,底层基于W3C定义的Web Push标准,配合Service Worker、后端服务即可实现,你需要的自定义代码逻辑触发通知的需求完全可落地,以下是两类可行方案:
方案1:使用支持服务端调用的第三方推送工具
你之前对OneSignal的认知存在偏差:OneSignal本身支持通过服务端API触发自定义通知,你只需要在前端完成用户通知订阅、将订阅唯一标识同步到你的业务后端,当笔记提醒触发时,你的后端调用OneSignal对应的服务端接口,传入目标用户标识、提醒内容等参数即可完成推送,完全适配你自身的业务逻辑。
同类可替代工具还有Firebase Cloud Messaging(FCM),实现逻辑和OneSignal一致。
方案2:全自研实现(无第三方依赖)
如果不想依赖外部推送服务,可以直接基于原生Web Push标准自主实现,核心步骤如下:
- 前端注册Service Worker,调用
Notification.requestPermission()向用户申请系统通知权限 - 权限授权通过后调用
pushManager.subscribe()获取用户专属的推送订阅对象,将订阅信息上传到你的后端持久化存储 - 后端集成web-push类的工具库,在笔记设定的提醒触发时间,用存储的用户订阅信息加密推送内容,发送到对应浏览器的官方推送服务端点即可
- 前端Service Worker监听
push事件,收到推送调用self.registration.showNotification()就能在系统层面弹出通知
注意事项
- Web Push要求站点必须部署在HTTPS环境下,你当前的线上站点已符合要求
- 主流桌面、移动端浏览器均已支持Web Push标准,仅小众浏览器存在兼容问题,可做降级提示
- 如果用户在系统层或浏览器层禁用了通知权限,推送会无法触达,可在前端增加权限状态检测逻辑,引导符合条件的用户开启权限
内容的提问来源于stack exchange,提问作者Yaniv Aflalo
相关产品推荐
相关产品推荐

