通过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
相关产品推荐
相关产品推荐

