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
相关产品推荐
相关产品推荐

