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

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:48:19