求最新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
前置配置
- 在Firebase控制台创建项目,添加Android应用,下载
google-services.json并放到android/app目录下 - 按照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
相关产品推荐
相关产品推荐

