如何使用PHP cURL与FCM向移动设备推送通知?
如何用PHP cURL通过FCM向移动设备推送通知
嘿,这事儿不难,我给你一步步拆解,再补全你提供的代码,让它能直接用:
第一步:准备FCM服务器密钥
首先你得从Firebase控制台拿到服务器密钥——进入你的项目,找到「项目设置」→「云消息传递」,就能看到这个密钥,它是你请求FCM接口的身份凭证。
第二步:构建请求头和推送内容
你需要定义两个关键数组:$headers(请求头,包含授权信息和内容类型)和$fields(推送的具体内容,比如目标设备、通知标题、自定义数据)。
第三步:完整的PHP cURL代码示例
我把你给的代码补全了,加上了必要的参数定义,直接用就行:
<?php // 替换成你的FCM服务器密钥 $serverKey = 'YOUR_FCM_SERVER_KEY'; // 目标设备的FCM令牌(或者主题,比如"/topics/news") $deviceToken = 'TARGET_DEVICE_FCM_TOKEN'; // 构建请求头 $headers = [ 'Authorization: key=' . $serverKey, 'Content-Type: application/json' ]; // 构建推送内容 $fields = [ 'to' => $deviceToken, 'notification' => [ 'title' => '新通知', 'body' => '这是一条来自PHP的FCM推送消息', 'sound' => 'default' // 可选:通知音效 ], 'data' => [ // 可选:自定义数据,APP端可以解析这些内容 'custom_key' => 'custom_value', 'user_id' => 123 ] ]; // 初始化cURL $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 注意:生产环境建议开启SSL验证,这里为了测试暂时关闭 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); // 执行请求并获取响应 $result = curl_exec($ch); // 检查请求是否失败 if(curl_errno($ch)){ echo 'cURL错误:' . curl_error($ch); } // 关闭cURL资源 curl_close($ch); // 输出FCM的响应结果 echo $result; ?>
一些关键说明
to参数:可以是单个设备的FCM令牌,也可以是主题(比如/topics/global),或者用registration_ids数组推送多个设备。notification字段:控制通知的显示内容,比如标题、正文、图标等,这些会直接在设备通知栏显示。data字段:自定义的业务数据,APP端可以在接收到通知后解析这些数据做进一步处理。- 生产环境建议开启
CURLOPT_SSL_VERIFYPEER为true,保证请求的安全性。
内容的提问来源于stack exchange,提问作者Shreyas Kheni
相关产品推荐
相关产品推荐

