Flutter中如何从Firebase应用内消息活动检索自定义数据

实现步骤
- 第一步:引入官方依赖
在pubspec.yaml中添加官方Firebase应用内消息依赖,注意和你项目里其他Firebase插件的主版本保持一致:
dependencies: firebase_core: ^2.x.x # 按你项目现有Firebase版本填写 firebase_in_app_messaging: ^0.7.x+ # 选择和其他Firebase插件兼容的稳定版本
执行flutter pub get完成依赖安装,确保项目已经完成常规的Firebase初始化配置。
- 第二步:注册消息事件监听
Firebase应用内消息的自定义数据会随着消息事件回调一起返回,不需要额外调用接口拉取,建议在应用初始化完成后(比如runApp执行后、根Widget的initState生命周期里)就启动监听:
import 'package:firebase_in_app_messaging/firebase_in_app_messaging.dart'; void initFiamListener() { final fiamInstance = FirebaseInAppMessaging.instance; // 监听用户点击消息事件,绝大多数业务取自定义数据都在这个回调里处理 fiamInstance.onMessageClicked.listen((inAppMessage) { // 这里的data就是你在Firebase控制台配置的所有自定义键值对,类型为Map<String, dynamic> final customData = inAppMessage.data; if (customData != null && customData.isNotEmpty) { // 直接通过你配置的key取值即可,比如你配置了key为target_page,就用customData['target_page']拿对应值 debugPrint('获取到消息自定义数据: $customData'); // 在这里写跳转、业务打点、弹窗触发等对应逻辑即可 } }); // 其他可选事件监听,回调里同样可以拿到完整自定义数据 fiamInstance.onMessageImpression.listen((inAppMessage) { // 消息刚曝光展示到屏幕上时触发 final customData = inAppMessage.data; }); fiamInstance.onMessageDismissed.listen((inAppMessage) { // 用户主动关闭消息时触发 final customData = inAppMessage.data; }); }
注意避坑
- 自定义数据需要你在Firebase控制台创建应用内消息活动时,在高级设置-自定义数据模块手动添加键值对,没有提前配置的话
data字段会是空值。 - 测试阶段建议打开FIAM调试模式:iOS端在Xcode启动参数里加
-FIRDebugEnabled,Android端执行adb shell setprop debug.firebase.analytics.app 你的应用包名,可以在控制台看到消息拉取、数据解析的完整日志,方便排查收不到消息、拿不到数据的问题。 - FIAM消息拉取有几秒的网络延迟,冷启动后不要立刻切后台,等10秒左右触发消息属于正常现象。
- 不管用官方提供的卡片、横幅、全屏图片、模态框哪种模板,上面的取值逻辑都通用,自定义布局的消息也能通过
data字段拿到自定义参数。
内容的提问来源于stack exchange,提问作者Ib Akram
相关产品推荐
相关产品推荐

