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

Flutter Awesome Notifications Android端重复通知调度异常排查

问题排查与解决方案

针对你在小米Mi 11 Lite(Android 11)上使用Awesome Notifications ^0.7.2时重复通知异常触发的问题,结合代码和设备特性,给出以下排查方向和解决办法:

1. 升级插件版本

0.7.2属于较旧的版本,该版本在Android平台的重复通知调度模块存在已知兼容性bug,尤其在小米等定制ROM上表现明显。建议升级到最新稳定版(如0.9.x系列),官方后续版本已修复大量类似的重复触发问题。

2. 避免重复创建同ID通知

如果每次调用createNotification时传入的uniqueId并非真正唯一,或者重复点击触发多次创建操作,会导致同一ID的通知被重复调度,引发冲突。建议在创建新通知前先取消旧的同ID通知:

Future<void> createNotification(
  String Name,
  int seconds,
  int id,
) async {
  if (seconds != 0) {
    print(seconds);
    // 取消同ID的旧通知,防止调度冲突
    await AwesomeNotifications().cancel(id);
    await AwesomeNotifications().createNotification(
      schedule: NotificationInterval(interval: seconds, repeats: true),
      content: NotificationContent(
        id: id,
        roundedBigPicture: true,
        channelKey: "basic_channel",
        title: "Test",
        body: "Test",
        notificationLayout: NotificationLayout.Default,
        displayOnForeground: true,
        displayOnBackground: true,
        actionType: ActionType.Default,
      ),
    );
  }
}

3. 适配小米设备的后台限制

小米Android 11的电池优化和后台管控会严格限制应用的后台调度能力,可能导致通知调度器异常:

  • 进入系统设置,将应用加入「后台无限制」列表;
  • 在电池优化设置中,将应用设为「不优化」;
  • 确保已正确申请并授予POST_NOTIFICATIONS、WAKE_LOCK等必要权限。

4. 修正调度参数逻辑

你的代码中硬编码了interval:180,但函数参数seconds未被实际使用,虽然当前场景下不影响,但如果后续需要根据seconds动态调整间隔,会出现逻辑错误,建议改为interval: seconds确保参数传递正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:10:27