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

如何使用Flutter搭配Laravel实现无需Firebase的推送通知功能

无Firebase的Flutter+Laravel推送通知实现方案

以下两种方案均不依赖Firebase,可根据你的App使用场景选择:


方案1:自实现WebSocket长连接推送

适合内网应用、长期前台运行的工具类App使用

后端(Laravel)实现

  • 安装laravel-websockets扩展包,该扩展可完全在本地部署WebSocket服务,无需第三方依赖
  • 在config/websockets.php中配置服务端口、加密密钥、广播规则等参数,使用你现有的MySQL数据库(phpMyAdmin管理)存储相关数据
  • 新建user_devices绑定表,字段至少包含:用户ID、设备唯一标识、WebSocket连接ID、连接状态、操作系统
  • 基于Laravel事件广播机制编写推送事件类,需要推送时触发事件,广播到对应用户的私有频道
  • 生产环境使用Supervisor托管WebSocket服务,避免进程意外中断

Flutter端实现

  • 添加web_socket_channel依赖,App启动后在用户登录成功时与Laravel WebSocket服务建立长连接,上报当前用户ID、设备标识完成绑定
  • 监听WebSocket连接状态,断网或连接断开时自动触发重连、重新绑定逻辑
  • 添加flutter_local_notifications依赖,监听后端推送的消息,触发本地通知的弹窗、提示音、震动等交互,同时处理通知点击跳转逻辑

注意:该方案在App被系统杀死后无法维持长连接,无法收到推送


方案2:对接原生系统推送通道

适合公网对外发布的App使用,推送到达率接近厂商系统级推送水平

后端(Laravel)实现

  • 分别申请各平台推送权限:iOS在Apple开发者后台申请APNs推送密钥,安卓在小米、华为、OPPO、vivo等对应厂商开放平台申请App推送密钥
  • 调整user_devices表,新增字段:iOS APNs deviceToken、安卓各厂商对应推送标识
  • 编写分平台推送逻辑:iOS端使用edujugon/apns-push扩展直接调用APNs接口推送;安卓端根据设备所属厂商,调用对应厂商的公开HTTP推送接口完成推送
  • 所有推送记录、设备绑定数据均存储在现有MySQL库中,可直接通过phpMyAdmin管理

Flutter端实现

  • 安卓端集成对应厂商的Flutter推送SDK封装,如flutter_huawei_push、flutter_xm_push等,适配不同厂商的设备标识获取逻辑,上报给Laravel后端
  • iOS端启动后申请通知权限,获取APNs deviceToken后上报后端
  • 集成flutter_local_notifications依赖,处理推送到达后的本地展示、点击跳转逻辑,同时支持自定义前台收到推送的展示样式

注意:该方案安卓端需要适配不同厂商的推送审核规则,申请推送白名单可进一步提升到达率


内容的提问来源于stack exchange,提问作者Rostand KPO-N-MEY

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:18:02