如何通过FCM从Arduino向Android发送推送通知?含SERVER_KEY查找与代码排查
Arduino通过FCM发送通知问题解决指南
一、找到FCM服务器密钥(SERVER_KEY)
- 进入Firebase控制台并打开你的项目
- 点击左侧菜单栏的「项目设置」(齿轮图标)
- 切换到「Cloud Messaging」标签页
- 若未看到服务器密钥,下拉页面找到「Legacy server key」区域,点击「生成密钥」(首次需生成)
- 注意:新创建的Firebase项目默认隐藏Legacy API,需先在同一页面的「Cloud Messaging API (Legacy)」模块点击「启用」,刷新后即可生成并查看服务器密钥
二、代码修正与说明
你的代码存在几个核心问题导致无法运行,修正后的完整代码如下:
#include <WiFi.h> #include <WiFiClientSecure.h> WiFiClientSecure client; // 必须使用SSL客户端,FCM强制要求HTTPS const char* ssid = "你的WiFi名称"; const char* password = "你的WiFi密码"; const char* SERVER_KEY = "你的FCM服务器密钥"; const char* DEVICE_TOKEN = "目标设备的FCM令牌"; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nWiFi连接成功"); // 跳过SSL证书验证(仅用于测试,生产环境建议添加有效证书) client.setInsecure(); } void sendDataToFirebase() { // 使用Raw String Literal避免手动转义引号,简化JSON编写 String data = R"({ "to": ")" DEVICE_TOKEN R"(", "notification": { "body": "Hi", "title": "Alarm" } })"; Serial.println("开始发送数据..."); // 连接FCM服务器,HTTPS默认端口为443 if (client.connect("fcm.googleapis.com", 443)) { Serial.println("已连接到FCM服务器"); // 发送HTTP请求头,每行结尾必须用\r\n,请求头与请求体间需空行分隔 client.println("POST /fcm/send HTTP/1.1"); client.println("Authorization: key=" + String(SERVER_KEY)); client.println("Content-Type: application/json"); client.println("Host: fcm.googleapis.com"); client.print("Content-Length: "); client.println(data.length()); client.println(); // 空行分隔请求头和请求体 client.print(data); // 等待服务器响应 delay(1000); Serial.println("\n服务器响应:"); while (client.available()) { char c = client.read(); Serial.print(c); } } else { Serial.println("连接FCM服务器失败"); } Serial.println("\n操作完成"); client.stop(); } void loop() { sendDataToFirebase(); delay(30000); // 每30秒发送一次测试通知 }
关键修正点:
- 强制HTTPS连接:FCM不支持HTTP协议,必须使用
WiFiClientSecure并连接443端口 - HTTP格式修正:请求头每行需以
\r\n结尾,请求头与请求体之间必须加空行,原代码的换行格式错误导致服务器无法解析 - JSON编写优化:用Raw String Literal避免手动转义引号,减少语法错误
- 完善基础流程:补充WiFi连接初始化代码,增加连接失败的错误提示
- 响应等待逻辑:添加延迟确保服务器返回响应后再读取
内容的提问来源于stack exchange,提问作者OVO Cuenta
相关产品推荐
相关产品推荐

