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

FCM V1 API浏览器通知接收问题:无Topic发送及订阅方法咨询

FCM V1 API 浏览器端通知问题及主题相关咨询

我已经从旧版FCM迁移到FCM V1 API,通过接口 https://fcm.googleapis.com/v1/projects/' . $project_id . '/messages:send 发送消息,请求头和参数如下:

$headers = [
            'Authorization: Bearer ' . $this->getGoogleAccessToken(),
            'Content-Type: application/json',
        ];
        $data = [
            'message' => [
                'notification' => [
                    'title' => $title,
                    'body' => $body,
                ],
                'data' => [
                    'custom' => 'test'
                ],
                'topic' => 'new-topic',
            ],
        ];

消息发送成功,但浏览器端未显示通知。现在有两个问题:

  1. 是否可不携带topic参数发送消息?
  2. 如何在浏览器端执行subscribeToTopic订阅主题?

补充:移动端使用FirebaseMessaging.instance.subscribeToTopic('new-topic')可正常接收通知。


问题解答

1. 是否可以不携带topic参数发送消息?

完全可以,但必须替换为其他合法的消息目标字段,否则请求会失败。FCM V1 API支持的目标类型包括:

  • 令牌(token):单设备推送,用token字段替换topic,值为浏览器端获取的FCM注册令牌
  • 条件(condition):基于多主题的逻辑条件推送,比如"'new-topic' in topics || 'old-topic' in topics"
  • 设备组(notification_key):针对一组关联设备推送

2. 浏览器端如何订阅主题?

Web端Firebase Messaging没有原生的subscribeToTopic方法,可通过以下两种方式实现:

方式一:后端通过Firebase Admin SDK处理

在你的后端服务中调用Admin SDK的订阅接口,传入浏览器端的FCM注册令牌和主题名:

// PHP Admin SDK 示例代码
$messaging = $firebase->getMessaging();
$registrationTokens = [
    '浏览器端获取的FCM注册令牌',
];
$topic = 'new-topic';

// 执行订阅
$messaging->subscribeToTopic($registrationTokens, $topic);

方式二:客户端通过授权HTTP请求订阅

让后端生成合法的访问令牌,前端调用FCM的主题订阅接口:

// 浏览器端JS示例代码
async function subscribeToTopic(token, topic) {
  const response = await fetch(`https://iid.googleapis.com/iid/v1/${token}/rel/topics/${topic}`, {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + '后端生成的FCM访问令牌',
      'Content-Type': 'application/json'
    }
  });
  const data = await response.json();
  console.log('订阅结果:', data);
}

注意:访问令牌需通过服务账号密钥生成,权限需包含firebase.messaging相关权限。

另外,浏览器端未收到通知还需排查:

  • 浏览器是否已开启通知权限
  • 前端是否正确初始化Firebase Messaging,并监听onMessage事件(后台消息需配置setBackgroundMessageHandler)
  • 确认浏览器端的注册令牌已成功订阅目标主题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:06:20