Flutter新版FirebaseMessaging的configure方法未定义如何解决?
适配方案说明
firebase_messaging 8.0.0 及以上版本已正式移除旧版的configure()方法,原方法内的三个回调分别对应推送消息的三个生命周期场景,需要拆分使用新版提供的独立API实现。新版回调的消息参数类型从原Map<String, dynamic>变更为RemoteMessage,可通过message.notification获取通知标题、正文等系统通知字段,通过message.data获取自定义透传参数。
各场景对应实现
原
onMessage(App处于前台活跃状态时收到推送)
该场景通过FirebaseMessaging.onMessage流监听实现,仅在App前台运行时触发回调:FirebaseMessaging.onMessage.listen((RemoteMessage message) { // 替换为原onMessage内的业务逻辑,例如解析消息、展示应用内提醒、更新本地状态 debugPrint('前台收到推送:${message.notification?.title},透传参数:${message.data}'); });注意:前台状态下系统默认不会自动弹出通知栏提醒。iOS端需要提前配置前台通知展示权限,安卓端建议搭配本地通知插件实现前台通知弹窗:
// iOS端初始化时调用即可,开启前台通知的弹窗、角标、声音权限 await FirebaseMessaging.instance.setForegroundNotificationPresentationOptions( alert: true, badge: true, sound: true, );原
onResume(App处于后台挂起状态、未被进程杀死,用户点击通知栏消息拉起App)
该场景通过FirebaseMessaging.onMessageOpenedApp流监听实现:FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { // 替换为原onResume内的业务逻辑,例如根据透传参数跳转指定页面 debugPrint('后台状态点击通知拉起App,参数:${message.data}'); });原
onLaunch(App处于完全终止/被杀死状态,用户点击通知栏消息冷启动App)
该场景无法通过流监听捕获,需要在App初始化阶段异步调用getInitialMessage()获取触发冷启动的通知消息:// 建议在首个页面的initState或者全局初始化逻辑中调用 void checkColdLaunchMessage() async { RemoteMessage? initialMessage = await FirebaseMessaging.instance.getInitialMessage(); if (initialMessage != null) { // 替换为原onLaunch内的业务逻辑,例如冷启动后跳转指定落地页 debugPrint('App冷启动由通知触发,参数:${initialMessage.data}'); } }
完整初始化参考代码
void initFirebaseMessaging() { // iOS前台通知权限配置 if (Platform.isIOS) { FirebaseMessaging.instance.setForegroundNotificationPresentationOptions( alert: true, badge: true, sound: true, ); } // 前台消息监听 FirebaseMessaging.onMessage.listen((RemoteMessage message) { // 原onMessage逻辑 handleInAppMessage(message); }); // 后台拉起消息监听 FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { // 原onResume逻辑 handleMessageNavigation(message); }); // 冷启动消息处理 FirebaseMessaging.instance.getInitialMessage().then((RemoteMessage? message) { if (message != null) { // 原onLaunch逻辑 handleMessageNavigation(message); } }); }
内容的提问来源于stack exchange,提问作者Daniel Bordera Climent
相关产品推荐
相关产品推荐

