Firebase推送通知在Android应用后台运行时显示错误图标问题
问题根因
应用前台时通知由你自定义的showNotification方法渲染,所以图标显示正常;后台时FCM不会触发自定义处理逻辑,会由SDK自动读取manifest配置渲染通知,你遇到的图标失效但颜色正常的问题,本质是通知图标不符合Android 5.0+的系统规范导致的。
Android 5.0及以上版本要求通知小图标必须是全透明背景+仅白色前景的矢量素材,系统会将所有非透明区域统一渲染为你配置的通知主色,若原图标存在不透明背景或者彩色内容,系统就会直接将图标渲染为纯色填充圆形。
修复方案
- 规范通知图标素材
使用Android Studio内置工具生成符合要求的图标:右键res目录 → 依次选择New→Image Asset→Icon Type设为Notification Icons,导入你的原始图标,工具会自动生成适配系统规范的通知图标,替换原有的ic_stat_name资源即可。 - 统一通知处理逻辑(最稳妥方案)
要求服务端下发的FCM消息全部改为数据类型消息,不要使用通知类型消息,这样不管应用处于前台还是后台,都会触发FirebaseMessagingService的onMessageReceived回调,全程走你自定义的showNotification方法渲染通知,完全规避FCM自动渲染带来的配置兼容问题。 - 兼容SDK版本异常
如果你使用的com.google.firebase:firebase-messaging版本低于21.0.0,存在已知的后台通知图标读取bug,升级到最新稳定版SDK即可解决。
内容的提问来源于stack exchange,提问作者user_4247
相关产品推荐
相关产品推荐

