Flutter中如何在onMessage监听的RemoteMessage中调用Map<String,dynamic>入参函数
调用方法说明
首先明确RemoteMessage对象的结构,你写的函数已经做了平台适配,只要把RemoteMessage转换为Map传入即可,分两个场景的调用方式如下:
1. onMessage 前台接收消息场景调用
onMessage监听的回调会直接返回RemoteMessage实例,调用示例:
FirebaseMessaging.onMessage.listen((RemoteMessage message) { // 传入RemoteMessage的全量Map结构 String rideRequestId = getRideRequestId(message.toMap()); // 后续业务逻辑处理,比如弹窗提示乘客叫车请求 print('收到乘车请求ID:$rideRequestId'); });
2. onResume 点击通知唤起应用场景调用
这个场景对应FirebaseMessaging.onMessageOpenedApp监听,调用方式和onMessage一致:
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { String rideRequestId = getRideRequestId(message.toMap()); // 后续业务逻辑处理,比如直接跳转到对应订单详情页 print('点击通知唤起应用,乘车请求ID:$rideRequestId'); });
可选优化:空安全兼容
建议给你的原有函数加上空值判断,避免字段缺失时抛出异常:
String getRideRequestId(Map<String,dynamic> message){ if(Platform.isAndroid){ return message['data']?['ride_request_id'] ?? ""; }else{ return message['ride_request_id'] ?? ""; } }
内容的提问来源于stack exchange,提问作者Hassan Quraishi
相关产品推荐
相关产品推荐

