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

Flutter使用flutter_local_notification时部分安卓设备通知图标不显示

问题原因分析

该问题是Android 5.0(API 21)及以上系统的通知图标强制规范导致的:系统会自动忽略通知图标的所有RGB颜色通道,仅保留Alpha透明通道做渲染。如果使用的通知图标带有非透明背景、彩色内容,不符合系统规范,在对规范要求严格的设备上就会被系统处理为灰色圆圈,仅有文本和大图可以正常展示。不同安卓厂商对通知图标规范的校验严格程度不同,所以会出现部分设备显示正常、部分设备图标异常的情况。

修复步骤
  • 生成符合规范的通知图标
    通知图标要求为仅含Alpha通道的剪影图标:背景完全透明,图案部分仅保留纯白色填充,不要添加任何彩色内容。推荐使用Android Studio自带工具生成:
    打开项目的android目录,右键res文件夹 -> 选择「New」->「Image Asset」,将Icon Type设置为「Notification Icons」,导入你的原始图标素材后工具会自动生成符合规范的各dpi尺寸图标,生成的图标会默认存放到对应dpi的drawable目录下。

    注意:不建议使用存放在mipmap目录下的桌面启动图标作为通知图标,桌面图标通常不符合通知图标规范。

  • 调整flutter_local_notifications初始化配置
    安卓端初始化通知配置时,明确指定你生成的通知图标资源名(不需要加文件后缀),示例代码如下:
    const AndroidInitializationSettings initializationSettingsAndroid =
        AndroidInitializationSettings('ic_notification');
    // 此处ic_notification为你生成的通知图标文件名
    
  • 适配混合推送场景(可选)
    如果你同时使用了Firebase Cloud Messaging等推送服务配合本地通知展示,还需要在AndroidManifest.xml的application标签内添加如下配置,指定全局默认通知图标:
    <!-- 指定默认通知图标 -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_notification" />
    <!-- 可选:配置通知图标渲染颜色 -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/notification_theme_color" />
    
  • 验证效果
    卸载设备上的旧版本应用后重新编译安装,避免缓存导致图标不更新。
注意事项
  • 生成图标时不要保留任何彩色通道内容,仅保留透明背景+白色剪影图案即可,系统会自动根据通知栏主题适配图标显示效果。
  • 如果你需要在通知中展示彩色大图标,可以通过通知的largeIcon参数单独配置,和默认小图标互不影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:27:00