Flutter接入Firebase Cloud Messaging后Android通知图标显示为白方块如何解决
安卓端FCM通知图标显示白块解决方案
- 调整图标存放路径:通知图标属于通用drawable资源,不要放在mipmap目录下,将Android Asset Studio导出的所有对应分辨率的图标文件放入
android/app/src/main/res/drawable-xxx对应分辨率文件夹中,同步修改Manifest中的配置为@drawable/ic_stat_logopush,同时确认资源文件名和配置的名称完全一致,安卓资源名称大小写敏感,不允许出现大写字母、特殊符号。 - 验证图标合规性:安卓5.0及以上系统对通知图标有强制要求,必须是「透明背景+仅白色Alpha通道内容」的设计,所有非透明区域都会被系统强制渲染为纯白色,如果你的图标存在不透明的背景层,就会完全显示为白块。你可以用图片编辑工具打开图标素材,确认除了Logo内容外其余区域完全透明。
- 检查Manifest配置位置:你添加的通知图标meta-data必须放在
AndroidManifest.xml的<application>标签内部,不能嵌套在<activity>、<service>等其他子标签下,否则配置不会生效。 - 补充通知图标背景色配置(可选):你可以额外添加配置指定通知图标对应的背景色,优化显示效果:
- 先在
android/app/src/main/res/values/colors.xml中添加自定义颜色(没有该文件就新建):
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="notification_icon_bg">#FF2196F3</color> <!-- 替换为你APP的主色即可 --> </resources>- 在Manifest的
<application>标签内添加颜色配置:
<meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/notification_icon_bg" /> - 先在
- 清理缓存重试:修改完成后完全卸载设备上的旧应用,重启测试设备后重新安装运行,避免旧的资源缓存导致新配置不生效。
- 检查Firebase控制台参数:通过Firebase控制台发送测试通知时,不要在「高级选项」的「通知图标」字段填写内容,留空就会默认读取Manifest的配置,避免填写错误的资源名导致异常。
内容的提问来源于stack exchange,提问作者mvasco
相关产品推荐
相关产品推荐

