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

Flutter如何实现数据库新增产品时向所有用户推送push notification

新产品入库自动推送功能可行实现方案

以下方案均适配你现有Laravel API+Flutter的技术栈,不需要大改现有业务逻辑:

方案1:Laravel模型事件+FCM推送(中小项目首选,接入成本最低)

  • 触发端直接复用Laravel自带的模型能力:在Product模型上注册created钩子,只要有新产品数据成功写入Database,钩子就会自动执行,不需要修改现有新增产品的表单接口代码,不会漏触发。
  • 提前让Flutter端在用户首次启动APP时,把设备的FCM推送令牌上报到Laravel的用户表存储;触发推送时可以直接给所有设备令牌批量发消息,更简单的做法是把所有用户归到同一个全局推送Topic,发一次消息就能覆盖全量用户,不用循环遍历全量用户token。
  • 如果你的用户量过万,别把推送逻辑放在接口请求里同步执行,会拖慢表单提交的响应速度,扔到Laravel自带的队列里异步处理就行,用户提交完表单立刻就能拿到成功响应,推送在后台慢慢发不影响体验。

方案2:数据库层事件监听+解耦推送服务(中大型项目适用,扩展性强)

  • 触发逻辑不绑定Laravel业务代码,直接监听数据库products表的插入动作:要么用MySQL触发器触发推送请求,要么监听数据库binlog日志捕获新增数据,不管是API提交的新品、后台管理员导入的商品、其他关联服务写入的商品数据,都能触发推送,不会因为业务代码漏写钩子丢消息。
  • 推送逻辑单独拆成独立服务,接到新品新增信号后分批给全量用户推消息,就算API服务升级重启、出现异常,推送任务也不会丢失。Flutter端不用做特殊改造,正常对接FCM或者国内厂商推送通道(极光、个推、华为小米推送等)即可。

方案3:WebSocket实时推送+离线补推(高实时性场景适用)

  • 如果你做的是秒杀、限量新品首发这类对消息实时性要求极高的场景,可以在原有推送通道的基础上,加一层WebSocket长连接:新品入库后立刻给当前在线的用户通过长连接发实时消息,APP在前台时能做到毫秒级收到提醒,比常规第三方推送的延迟低很多。
  • 对没建立长连接的离线用户,还是走常规的厂商/FCM推送通道发通知,等用户下次打开APP的时候,再拉取未读的新品消息做补全,保证所有用户都能收到提醒。
  • 这个方案需要额外维护WebSocket服务(可以直接用Laravel WebSockets或者Soketi,不用从零写),服务器成本和维护量比前两个方案稍高。

落地通用提醒

  • Flutter端记得提前适配安卓13+的通知权限申请逻辑,用户没授权的话所有推送都收不到。
  • 定期清理数据库里存储的失效设备推送令牌,比如推送接口返回token无效就直接删掉对应记录,减少无效请求浪费资源。
  • 推送内容里可以带上新产品的ID、封面图、跳转链接字段,Flutter端点通知可以直接跳转到对应产品详情页,体验更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:36:26