如何从flutter-web端向同Firebase项目下的flutter应用发送通知?
Flutter Web 向同Firebase项目下Flutter原生应用推送通知实现方案
前置配置校验
- 所有Flutter原生端已完成
firebase_messaging集成,实现前台、后台、杀死状态下的通知接收逻辑,应用启动后主动上报FCM registration token至存储层(可选择自有后端数据库、Firebase Firestore/Realtime Database,需配置合理的读写规则避免token泄露) - 所有Flutter Web端已完成FCM Web侧配置,包含Web FCM密钥、VAPID密钥配置,且所有端共用同一套用户身份鉴权体系,方便按用户、设备维度匹配推送目标
可选实现方案
方案1:基于Cloud Functions for Firebase 中转推送(生产环境首选)
该方案安全性、稳定性最高,无需自行搭建服务器,完全复用Firebase生态能力,实现流程如下:
- 在Firebase控制台开启Cloud Functions服务,编写云函数作为推送触发入口,权限校验、推送逻辑全部在云端执行,避免密钥泄露风险
云函数示例代码:
const admin = require('firebase-admin'); admin.initializeApp(); // 可调用云函数,自动校验Firebase Auth身份 exports.triggerPush = functions.https.onCall(async (data, context) => { // 校验请求发起者身份 if (!context.auth) { throw new functions.https.HttpsError('unauthenticated', '无操作权限'); } // 构造通知 payload const messagePayload = { token: data.targetDeviceToken, notification: { title: data.noticeTitle, body: data.noticeContent }, data: data.customParams || {} }; // 执行推送 await admin.messaging().send(messagePayload); return { code: 0, msg: '推送成功' }; });
- Flutter Web端需要发起推送时,携带目标设备token、通知标题、通知内容、自定义业务参数,直接调用上述云函数即可
- Flutter原生端已集成的FCM接收逻辑会自动捕获推送通知,按业务需求处理跳转、数据解析即可
方案2:Web端直接调用FCM HTTP v1 API推送(轻量测试/小范围场景适用)
无需部署云端代码,适合快速验证需求,注意做好权限管控:
- 在Firebase控制台生成FCM HTTP v1 API的服务账号密钥,仅授权给Web端的管理员角色用户获取临时访问令牌,禁止明文硬编码密钥到前端代码
- Web端构造符合FCM接口规范的请求体,携带访问令牌调用FCM公开接口,指定目标registration token即可完成推送
扩展能力适配
- 批量全量推送:所有原生端提前订阅指定FCM主题(Topic),推送时直接指定主题为目标,无需维护全量设备token列表
- 按用户维度推送:存储层将用户ID与其名下所有设备的registration token绑定,推送时遍历对应用户名下所有token发送即可
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

