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

如何使用Flutter Awesome Notification实现应用关闭时的定时本地通知?

Flutter离线定时本地通知实现方案说明

核心结论

iOS平台

仅使用Flutter Awesome Notification即可实现需求。iOS系统本身会统一托管应用注册的本地定时通知,只要用户授予了通知权限,就算应用完全关闭、未在后台运行,系统也会在指定时间触发通知,无需额外引入其他依赖。

Android平台

需要分场景判断:

  • 若你仅适配Android 11及更低版本、对通知触发的可靠性要求不高,仅用Flutter Awesome Notification可满足基础需求
  • 若你需要适配Android 12及更高版本、或需要闹钟级别的高可靠触发,必须搭配android_alarm_manager_plus(原android_alarm_manager的官方维护分支)使用。

原因说明

Android 12之后系统对精确定时任务做了严格的权限限制,加上国产安卓ROM普遍有激进的后台查杀策略,Flutter Awesome Notification自身的定时调度任务很容易在应用被完全关闭后被系统回收,导致通知延迟触发甚至完全无法触发。
android_alarm_manager_plus会调用系统层级的闹钟服务注册定时任务,优先级远高于普通应用后台任务,就算应用被彻底杀死也能唤起执行预设逻辑,此时再调用Flutter Awesome Notification发送通知即可达到闹钟级的触发效果。


必要配置&注意事项

  • Android端需要在AndroidManifest.xml中声明精确闹钟权限:
    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    
  • 提前向用户申请通知权限、精确闹钟权限、忽略电池优化权限,所有权限授予后定时任务才能正常触发
  • 小米、华为、OPPO、vivo等国产ROM需要额外引导用户手动开启应用的自启动、后台活动权限,否则系统会拦截后台任务
  • 如果需要实现重启设备后依然生效的定时通知,需要监听设备开机广播,在设备重启后重新注册所有定时任务

简易代码示例

仅用Awesome Notification实现定时通知(适用于iOS、Android低版本场景)

// 提前创建通知通道后调用
AwesomeNotifications().createNotification(
  content: NotificationContent(
    id: 1001,
    channelKey: 'scheduled_alarm_channel',
    title: '闹钟提醒',
    body: '你设定的时间已到',
  ),
  // 指定触发时间
  schedule: NotificationCalendar(
    year: 2024,
    month: 6,
    day: 1,
    hour: 7,
    minute: 30,
    second: 0,
    repeats: false,
  ),
);

搭配android_alarm_manager_plus实现高可靠定时(适用于Android高版本场景)

// 注册一次性定时任务,2024年6月1日7点30分触发
AndroidAlarmManager.oneShotAt(
  DateTime(2024,6,1,7,30),
  1001,
  // 触发时执行的回调方法,回调中调用Awesome Notification发送通知
  triggerAlarmNotification,
  exact: true,
  wakeup: true,
);

内容的提问来源于stack exchange,提问作者ARPIT JAISWAL IET Student

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:18:03