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

如何在Flutter应用中设置通知并实现后台持续运行?

Flutter应用内推送通知与后台运行实现

一、应用内触发推送通知

Flutter完全支持通过按钮点击、条件判断等应用内事件触发推送通知,社区常用flutter_local_notifications包实现本地通知功能。

基本实现流程:

  1. 添加依赖
    在pubspec.yaml中引入插件:
dependencies:
  flutter_local_notifications: ^16.1.0
  1. 初始化通知插件
    在应用启动阶段完成初始化(示例放在main函数或页面的initState中):
import 'package:flutter_local_notifications/flutter_local_notifications.dart';

FlutterLocalNotificationsPlugin notificationsPlugin = FlutterLocalNotificationsPlugin();

void initLocalNotifications() async {
  const AndroidInitializationSettings androidInitSettings =
      AndroidInitializationSettings('@mipmap/ic_launcher');
  const InitializationSettings initSettings =
      InitializationSettings(android: androidInitSettings);
  await notificationsPlugin.initialize(initSettings);
}
  1. 事件触发通知
    按钮点击或if条件满足时调用通知发送方法:
// 按钮点击触发示例
ElevatedButton(
  onPressed: () async {
    const AndroidNotificationDetails androidDetails = AndroidNotificationDetails(
      'app_internal_notify',
      '应用内通知',
      channelDescription: '应用内事件触发的通知通道',
      importance: Importance.max,
      priority: Priority.high,
    );
    const NotificationDetails notifyDetails =
        NotificationDetails(android: androidDetails);
    await notificationsPlugin.show(
      0,
      '新通知',
      '这是通过按钮点击触发的应用内通知',
      notifyDetails,
      payload: 'custom_data',
    );
  },
  child: const Text('触发通知'),
)

如果是if逻辑触发,只需在条件分支中调用上述show方法即可。

二、Flutter应用后台持续运行

Flutter本身没有原生的"始终后台运行"能力,受Android和iOS系统后台限制,但可以通过平台适配插件实现特定场景的后台任务:

Android端后台任务实现

可使用workmanager或android_alarm_manager_plus插件实现周期性后台任务,以workmanager为例:

  1. 添加依赖
dependencies:
  workmanager: ^0.5.1
  1. 注册并执行后台任务
import 'package:workmanager/workmanager.dart';

// 后台任务回调函数
void backgroundTaskDispatcher() {
  Workmanager().executeTask((taskId, inputData) {
    // 这里编写后台执行的逻辑,比如定时发送本地通知
    print('后台任务正在执行');
    return Future.value(true);
  });
}

// 初始化并注册任务
void initBackgroundWork() {
  Workmanager().initialize(
    backgroundTaskDispatcher,
    isInDebugMode: true,
  );
  // 注册每15分钟执行一次的周期性任务(Android系统最小周期为15分钟)
  Workmanager().registerPeriodicTask(
    'periodic_task_id',
    'background_task',
    frequency: const Duration(minutes: 15),
  );
}

iOS端后台任务说明

iOS对后台运行限制更严格,仅允许音频、定位、VOIP等特定场景保持后台活跃,或通过BGTaskScheduler实现后台刷新。workmanager插件已适配iOS逻辑,可通过配置Info.plist开启对应后台模式权限实现。

注意:无论Android还是iOS,后台运行都需遵循系统权限规则,比如Android 12+需申请POST_NOTIFICATIONS权限,iOS需在Info.plist中声明后台模式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:31:49