升级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
相关产品推荐
相关产品推荐

