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

升级firebase_messaging至10.0.4后FirebaseMessaging无默认构造函数报错如何解决

解决方案

1. 修复FirebaseMessaging实例化报错

firebase_messaging从10.0.0版本开始移除了默认构造方法,统一使用单例实例获取方式,修改代码如下:

class PushNotificationService
{
 // 替换原有实例化代码
 final FirebaseMessaging firebaseMessaging = FirebaseMessaging.instance;
}

2. 修复configure方法调用报错

configure方法在新版本中已被废弃,改为使用独立的Stream接口处理不同场景的通知回调,原有三个回调的对应替换逻辑如下:

  • 原onMessage对应FirebaseMessaging.onMessage流监听,处理应用在前台运行时收到的通知
  • 原onLaunch对应FirebaseMessaging.instance.getInitialMessage()方法,处理应用完全关闭后通过点击通知启动的场景
  • 原onResume对应FirebaseMessaging.onMessageOpenedApp流监听,处理应用在后台挂起时通过点击通知唤醒的场景

修改后的initialize方法代码如下:

Future initialize(context) async {
  // 处理前台收到通知的场景
  FirebaseMessaging.onMessage.listen((RemoteMessage message) {
    retrieveRideRequestInfo(getRideRequestId(message.data), context);
  });

  // 处理应用从完全关闭状态通过点击通知启动的场景
  RemoteMessage? initialMessage = await FirebaseMessaging.instance.getInitialMessage();
  if (initialMessage != null) {
    retrieveRideRequestInfo(getRideRequestId(initialMessage.data), context);
  }

  // 处理应用在后台挂起时通过点击通知唤醒的场景
  FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
    retrieveRideRequestInfo(getRideRequestId(message.data), context);
  });
}

注意:新版本通知的payload结构发生变化,自定义参数统一放在message.data属性中,原直接从message根节点取参数的逻辑需要同步调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:24:02