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

使用awesome_notifications时遇“Invalid notification (no valid small icon)”错误怎么解决?

解决Android通知“Invalid notification (no valid small icon)”错误

问题原因

Android系统强制要求所有通知必须指定有效小图标。你之前使用默认Flutter图标时,null会自动 fallback 到系统默认或Flutter内置通知图标,但替换应用图标后,awesome_notifications无法自动识别到可用的通知图标,因此触发报错。

解决步骤

1. 准备符合规范的通知小图标

Android通知小图标要求为单色透明背景的图标,建议单独制作一套适配不同分辨率的图标(命名如ic_notification.png),并放置到android/app/src/main/res下对应的mipmap-hdpi/mipmap-mdpi/mipmap-xhdpi等文件夹中。

2. 在AwesomeNotifications初始化时指定图标

修改初始化代码,将第一个参数(defaultIcon)从null替换为你的通知图标资源路径:

Future<void> initialiseNotifications() async {
    await AwesomeNotifications().initialize(
      'resource://mipmap/ic_notification', // 替换为你的通知图标资源名
      [
        NotificationChannel(
          channelKey: 'reflection',
          channelName: 'Reflection Channel',
          channelDescription: 'Channel for reflection notifications',
          defaultColor: Colors.purple,
          ledColor: Colors.purple,
          enableVibration: true,
          defaultRingtoneType: DefaultRingtoneType.Alarm,
        ),
      ]
    );
}

3. (可选)直接复用应用图标(不推荐)

如果暂时不想单独制作通知图标,也可以直接使用flutter_launcher_icons生成的应用图标(注意:应用图标通常不是单色,显示效果可能不符合Android通知规范),只需指定应用图标默认资源名ic_launcher:

await AwesomeNotifications().initialize(
  'resource://mipmap/ic_launcher',
  // 其他配置保持不变
);

4. (可选)全局配置默认通知图标

若希望所有通知默认使用同一图标,可在android/app/src/main/AndroidManifest.xml的<application>标签内添加以下配置:

<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@mipmap/ic_notification" />

此配置会作为所有通知的 fallback,但若代码中单独指定了图标,会优先使用代码中的设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:07:39