Node-RED中使用fcm-push向Android发送通知的示例流程需求
没问题!我来给你一步步拆解如何用Node-RED搭配fcm-push实现Android通知推送,附上完整的示例流程,你可以直接照着搭:
第一步:准备Firebase密钥和设备Token
- 先从Firebase控制台下载你的服务账号密钥(JSON文件),或者直接复制里面的
private_key和client_email字段内容,后面配置会用到。 - 确保你已经拿到目标Android设备的FCM Token——这个应该是你APP里获取到的,或者之前用控制台推送时成功过的那个Token。
第二步:安装Node-RED的FCM节点
打开Node-RED的管理面板(右上角的菜单按钮),进入“管理节点”页面,搜索node-red-contrib-fcm-push并安装这个节点,它是专门用来处理FCM推送的。
第三步:搭建完整的Node-RED流程
我给你准备了一个可以直接复用的示例流程,分为4个核心节点,你可以跟着一步步来,或者直接导入完整流程代码:
1. Inject触发节点
用默认的Inject节点就行,配置成手动触发(点击节点上的按钮),或者根据你的需求设置定时触发,用来启动推送流程。
2. Function节点(构造FCM消息)
把这个节点连接到Inject节点,然后把下面的代码粘贴进去,记得替换成你自己的信息:
// 替换成你的Firebase服务账号信息 const fcmConfig = { serviceAccount: { client_email: "你的client_email@xxx.iam.gserviceaccount.com", private_key: "-----BEGIN PRIVATE KEY-----\n你的私钥内容\n-----END PRIVATE KEY-----\n" } }; // 替换成目标设备的FCM Token const deviceToken = "你的Android设备Token"; // 构造FCM通知内容 msg.payload = { to: deviceToken, notification: { title: "来自Node-RED的通知", body: "这是一条测试推送消息", sound: "default" // 可选,触发系统默认提示音 }, data: { // 可选,自定义数据,你的APP可以解析这些内容做后续处理 orderId: "12345", type: "test" } }; // 将配置传递给FCM Push节点 msg.fcmConfig = fcmConfig; return msg;
3. FCM Push节点
把Function节点的输出连接到这个节点,不需要额外配置——因为我们已经在Function节点里把Firebase的配置信息传给它了。
4. Debug节点
把FCM Push节点的输出连接到Debug节点,这样你就能在右侧的调试面板里看到推送的结果(成功的响应或者失败的错误信息)。
完整流程代码(可直接导入Node-RED)
你可以把下面的JSON复制到Node-RED的导入对话框里(右上角菜单→导入),导入后再替换里面的占位信息:
[{"id":"a1b2c3d4","type":"inject","z":"your-flow-id","name":"触发推送","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":100,"y":200,"wires":[["e5f6g7h8"]]},{"id":"e5f6g7h8","type":"function","z":"your-flow-id","name":"构造FCM消息","func":"// 替换成你的Firebase服务账号信息\nconst fcmConfig = {\n serviceAccount: {\n client_email: \"你的client_email@xxx.iam.gserviceaccount.com\",\n private_key: \"-----BEGIN PRIVATE KEY-----\\n你的私钥内容\\n-----END PRIVATE KEY-----\\n\"\n }\n};\n\n// 替换成目标设备的FCM Token\nconst deviceToken = \"你的Android设备Token\";\n\n// 构造FCM通知内容\nmsg.payload = {\n to: deviceToken,\n notification: {\n title: \"来自Node-RED的通知\",\n body: \"这是一条测试推送消息\",\n sound: \"default\"\n },\n data: {\n orderId: \"12345\",\n type: \"test\"\n }\n};\n\nmsg.fcmConfig = fcmConfig;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":320,"y":200,"wires":[["i9j0k1l2"]]},{"id":"i9j0k1l2","type":"fcm-push","z":"your-flow-id","name":"","x":540,"y":200,"wires":[["m3n4o5p6"]]},{"id":"m3n4o5p6","type":"debug","z":"your-flow-id","name":"推送结果","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":760,"y":200,"wires":[]}]
第四步:测试流程
- 替换完所有占位信息(Firebase账号信息、设备Token)后,点击Node-RED右上角的“部署”按钮。
- 点击Inject节点上的按钮触发推送。
- 看右侧调试面板的输出:如果显示成功的响应,你的Android设备应该就能收到通知了;如果失败,根据错误信息排查(比如Token无效、密钥格式不对等)。
常见问题提示
- 注意
private_key的格式:一定要保留首尾的-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----,并且中间的私钥内容要用\n换行,不要直接复制成一堆没有换行的字符串。 - 设备Token要确保是当前设备有效的,有些情况下Token会过期或者被Firebase注销,需要重新获取。
- 确认Firebase项目里的Android应用配置和你的APP一致(包名、签名证书指纹等),否则可能会推送失败。
内容的提问来源于stack exchange,提问作者kdhismgr
相关产品推荐
相关产品推荐

