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

通过FCM发送推送通知返回成功但未收到通知的问题排查

FCM推送返回成功但收不到通知的问题排查与修复

你遇到的问题是FCM接口返回全成功响应,但设备无法收到通知,而使用相同Token在Firebase控制台发送却正常,核心原因是代码缺少Android 8.0+所需的通知渠道配置,以及部分细节遗漏。以下是具体修复方案:

1. 添加Android通知渠道配置

Android 8.0(API 26)及以上版本强制要求所有通知归属到指定的通知渠道,Firebase控制台发送时会自动处理渠道逻辑,但通过SDK发送必须显式配置。修改SendPushNotification中的MulticastMessage结构:

response, err := fcmClient.SendMulticast(ctx, &messaging.MulticastMessage{
    Notification: &messaging.Notification{
        Title: "Congratulations!!",
        Body:  "You have just implemented push notification", // 修复原代码拼写错误:implement → implemented
    },
    // 新增Android配置
    Android: &messaging.AndroidConfig{
        Notification: &messaging.AndroidNotification{
            ChannelID: "your_default_channel_id", // 替换为Android项目中已创建的通知渠道ID
            Priority:  "high", // 设置高优先级,确保通知能及时触发
        },
    },
    Tokens: deviceTokens,
})

注意:你的Android应用必须提前创建对应ID的通知渠道,否则系统会直接忽略该通知。如果还未创建,需要在Android端代码中添加渠道初始化逻辑。

2. 修复代码拼写错误

原代码中通知内容的implement是语法错误,改为implemented即可(不影响通知接收,但属于代码规范问题)。

3. 检查设备与应用状态

  • 确认设备未开启通知拦截功能,且应用已获取通知权限;
  • 如果App处于前台,Android系统不会自动弹出通知栏消息,需要在App端手动处理FCM消息回调。

4. 可选:优化Firebase App初始化

当前初始化方式可正常工作,但显式指定项目ID能避免潜在的配置歧义:

// 创建Firebase配置结构体
firebaseConfig := &firebase.Config{
    ProjectID: "your-firebase-project-id", // 替换为你的Firebase项目ID
}
app, err := firebase.NewApp(ctx, firebaseConfig, opts...)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:46:07