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

求最新Flutter Android平台FCM推送通知及角标通知示例代码

Android平台Flutter角标通知基础代码

Android原生没有统一的应用角标API,需依赖第三方库实现,以下是基于flutter_app_badger的基础实现:

依赖配置

在pubspec.yaml中添加依赖:

dependencies:
  flutter_app_badger: ^1.5.0

核心代码

import 'package:flutter_app_badger/flutter_app_badger.dart';

// 设置角标数量
void setBadgeCount(int count) async {
  bool isSupported = await FlutterAppBadger.isAppBadgeSupported();
  if (isSupported) {
    await FlutterAppBadger.updateBadgeCount(count);
  }
}

// 清除角标
void removeBadge() async {
  bool isSupported = await FlutterAppBadger.isAppBadgeSupported();
  if (isSupported) {
    await FlutterAppBadger.removeBadge();
  }
}
Flutter基础本地推送通知示例代码

使用flutter_local_notifications实现本地推送:

依赖配置

dependencies:
  flutter_local_notifications: ^16.1.0

初始化与发送代码

import 'package:flutter_local_notifications/flutter_local_notifications.dart';

final FlutterLocalNotificationsPlugin _notificationsPlugin = FlutterLocalNotificationsPlugin();

// 初始化本地通知
Future<void> initLocalNotifications() async {
  const AndroidInitializationSettings androidInitSettings =
      AndroidInitializationSettings('@mipmap/ic_launcher');
  const InitializationSettings initSettings =
      InitializationSettings(android: androidInitSettings);
  
  await _notificationsPlugin.initialize(initSettings);
}

// 发送本地通知
Future<void> showLocalNotification() async {
  const AndroidNotificationDetails androidDetails = AndroidNotificationDetails(
    'basic_channel',
    '基础通知频道',
    channelDescription: '用于展示基础本地通知',
    importance: Importance.max,
    priority: Priority.high,
  );
  const NotificationDetails notificationDetails =
      NotificationDetails(android: androidDetails);
  
  await _notificationsPlugin.show(
    0,
    '测试本地通知',
    '这是一条基础本地推送内容',
    notificationDetails,
    payload: 'custom_payload',
  );
}
Flutter Android平台FCM推送通知可执行示例代码

结合firebase_core、firebase_messaging和flutter_local_notifications实现FCM推送:

依赖配置

dependencies:
  firebase_core: ^2.15.0
  firebase_messaging: ^14.6.5
  flutter_local_notifications: ^16.1.0

前置配置

  1. 在Firebase控制台创建项目,添加Android应用,下载google-services.json并放到android/app目录下
  2. 按照Firebase指引修改android/build.gradle和android/app/build.gradle,添加Google服务依赖

核心代码

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';

final FlutterLocalNotificationsPlugin _notificationsPlugin = FlutterLocalNotificationsPlugin();

// 初始化FCM与通知服务
Future<void> initFCM() async {
  // 初始化Firebase
  await Firebase.initializeApp();
  
  FirebaseMessaging messaging = FirebaseMessaging.instance;
  
  // 请求通知权限
  NotificationSettings settings = await messaging.requestPermission(
    alert: true,
    badge: true,
    sound: true,
  );
  
  // 获取设备FCM令牌
  String? token = await messaging.getToken();
  print('FCM Token: $token');
  
  // 初始化本地通知(用于前台展示FCM消息)
  const AndroidInitializationSettings androidInitSettings =
      AndroidInitializationSettings('@mipmap/ic_launcher');
  const InitializationSettings initSettings =
      InitializationSettings(android: androidInitSettings);
  
  await _notificationsPlugin.initialize(initSettings);
  
  // 监听前台收到的FCM消息
  FirebaseMessaging.onMessage.listen((RemoteMessage message) {
    RemoteNotification? notification = message.notification;
    AndroidNotification? android = message.notification?.android;
    
    if (notification != null && android != null) {
      _notificationsPlugin.show(
        notification.hashCode,
        notification.title,
        notification.body,
        NotificationDetails(
          android: AndroidNotificationDetails(
            'fcm_channel',
            'FCM通知频道',
            channelDescription: '用于展示Firebase推送消息',
            icon: android.smallIcon,
            importance: Importance.max,
            priority: Priority.high,
          ),
        ),
      );
    }
  });
  
  // 处理用户点击通知打开应用的事件
  FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
    print('用户点击通知进入应用,消息数据: ${message.data}');
  });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 12:21:29