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

Flutter应用被杀死/终止时如何显示本地通知?

Flutter应用被杀死/终止时如何显示本地通知?

嗨,我来帮你搞定这个问题!咱们用flutter_local_notifications的时候,应用在前台或后台能正常发通知,但一旦被彻底杀死,插件本身就没法触发了——因为它依赖应用进程运行。这时候得结合系统级的后台任务工具,分安卓和iOS两种情况来处理:

安卓端处理方案

  • 推荐用workmanager或者android_alarm_manager_plus这类插件来创建后台任务,让系统在指定时间唤醒任务,再调用通知插件发通知。
    • 大致步骤是:
      1. 在pubspec.yaml里添加对应插件的依赖,比如workmanager: ^0.5.1(记得用最新版本)
      2. 初始化WorkManager,注册一个一次性或周期性任务,设置好你要触发通知的时间点。
      3. 在任务的回调函数里,初始化flutter_local_notifications实例,然后调用通知发送方法。
    • 要注意的坑:
      • 安卓12及以上版本,得提前申请POST_NOTIFICATIONS权限;还要在AndroidManifest.xml里添加RECEIVE_BOOT_COMPLETED权限,这样设备重启后任务还能生效。
      • 小米、华为、OPPO这些定制系统,得手动给应用开“后台运行权限”和“自启动权限”,不然系统会直接掐掉后台任务。

iOS端处理方案

  • iOS的后台限制比较严,得依托系统的本地通知调度机制:
    • 其实flutter_local_notifications已经封装了iOS的UNNotificationRequest,只要配置对就能在后台甚至应用被杀死时触发:
      1. 在Info.plist里开启UIBackgroundModes中的remote-notification(别担心,本地通知也能用到这个权限),如果需要自定义通知内容,还要配置notification-content-extension。
      2. 调度通知时用zonedSchedule方法,iOS这边要把uiLocalNotificationDateInterpretation设为UILocalNotificationDateInterpretation.wallClockTime,确保是按真实时间触发。
    • 要是需要精确到秒的通知,iOS 15+可以用BGTaskScheduler,但这个得向苹果说明用途,审核可能会严格,非必要不建议用。

测试小技巧

别直接从最近任务列表划掉应用来测试哦,有些安卓厂商会直接终止所有相关进程,最好用adb命令adb shell am kill com.your.app.package来模拟真正的应用终止状态,这样测试结果更准确。

备注:内容来源于stack exchange,提问作者Nafis Ligari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:59:37