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

如何用PHP服务端实现Firebase带大图的推送通知?

解决PHP服务端发送带大图的Firebase推送通知问题

问题分析

你之前的代码只定义了推送的payload结构,但缺少了发起HTTP请求的核心环节,另外还有几个容易踩坑的点可能导致大图不显示:比如图片URL不是HTTPS协议、请求头配置错误、FCM服务器权限不足等。

完整可行代码示例

下面是经过验证的完整实现,包含了所有必要的请求配置:

<?php
// 基础配置信息
$serverKey = '你的Firebase服务器密钥'; // 从Firebase控制台获取
$targetToken = '目标设备的FCM令牌';
$notifyTitle = '你的通知标题';
$notifyContent = '你的通知内容';
$bigImageUrl = 'https://你的大图地址(必须是HTTPS可访问)';
$clickRedirectUrl = '点击通知跳转的目标URL';

// 构建FCM推送Payload
$pushPayload = [
    'to' => $targetToken,
    'notification' => [
        'title' => $notifyTitle,
        'body' => $notifyContent,
        'click_action' => $clickRedirectUrl,
        'image' => $bigImageUrl // 这个字段用于指定通知栏显示的大图
    ],
    // 可选:添加自定义业务数据,客户端可自行解析
    'data' => [
        'custom_id' => '123',
        'extra_info' => '自定义内容'
    ]
];

// 初始化CURL请求
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
    'Authorization: key=' . $serverKey,
    'Content-Type: application/json'
]);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($pushPayload));

// 执行请求并处理响应
$response = curl_exec($curl);
$curlError = curl_error($curl);

curl_close($curl);

// 调试输出结果
if ($curlError) {
    echo '请求错误: ' . $curlError;
} else {
    echo 'FCM返回响应: ' . $response;
}
?>

关键注意事项

  • 服务器密钥获取:登录Firebase控制台 → 进入项目设置 → 选择「云消息传递」标签 → 复制「服务器密钥」
  • 图片要求:必须使用HTTPS协议的公开可访问链接,图片尺寸建议适配通知栏(比如宽高比2:1),避免防盗链限制导致FCM无法拉取图片
  • 如果notification的image字段不生效:可以改用data字段传递大图地址,然后在客户端(Android/iOS)自定义通知显示逻辑,示例payload调整如下:
$pushPayload = [
    'to' => $targetToken,
    'notification' => [
        'title' => $notifyTitle,
        'body' => $notifyContent,
        'click_action' => $clickRedirectUrl
    ],
    'data' => [
        'big_image_url' => $bigImageUrl,
        'custom_data' => '自定义内容'
    ]
];

这种方式需要客户端配合,比如Android在FirebaseMessagingService中读取data字段,手动构建带大图的通知。

常见排查要点

  • 检查服务器密钥是否正确,是否有云消息传递的权限
  • 直接在浏览器打开图片URL,确认能正常加载(必须是HTTPS)
  • 查看FCM返回的响应信息,根据错误提示调整(比如令牌无效、权限不足等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:37:34