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

Flutter 中 Firebase Analytics 自定义事件如何统计用户参与时长?

Flutter Firebase Analytics 自定义事件添加上报参与时长方案

方案1:手动计算单次行为时长上报(适配视频播放等单操作场景,灵活度最高)

这是最常用的实现方式,完全贴合你当前的视频播放事件上报场景,操作步骤如下:

  • 行为触发时记录起始时间:用户点击播放、进入目标页面时,用DateTime.now().millisecondsSinceEpoch记录当前时间戳,存入全局/类内部变量
  • 行为结束时计算时长:用户暂停播放、退出页面、播放完成时,用当前时间戳减去之前记录的起始时间,得到准确的行为时长(推荐统一用毫秒作为单位,避免小数精度问题)
  • 将时长作为自定义参数传入事件上报逻辑即可

代码示例:

// 页面类内部定义变量存储播放起始时间
int? _playStartTime;

// 播放触发时调用,记录起始时间
void _onPlayStart() {
  _playStartTime = DateTime.now().millisecondsSinceEpoch;
  // 原有播放逻辑保留
}

// 播放结束/上报事件时调用,计算时长并上报
void _onPlayEnd() {
  if (_playStartTime == null) return;
  // 计算实际播放时长,单位毫秒
  final playDuration = DateTime.now().millisecondsSinceEpoch - _playStartTime!;
  final analyticsObserver = Provider.of<FirebaseAnalyticsObserver>(context, listen: false);
  analyticsObserver.analytics.logEvent(
    name: 'video_screen',
    parameters: {
      'user_id': userProfile.userId,
      'screen': 'video_screen',
      'action': 'play',
      'type': 'meme',
      'highlight_id': 'DS7m4rEnxSiTe',
      // 新增时长参数
      'play_duration_ms': playDuration,
    },
  );
  // 重置时间变量,避免重复计算
  _playStartTime = null;
}

方案2:自动监听页面停留时长(适配页面级停留时长统计)

如果你需要统计的是用户在整个页面的停留时长,可以通过Flutter的RouteObserver实现自动化统计,无需每个页面手动编写计时逻辑:

  • 首先在MaterialApp中注册RouteObserver实例
  • 对应页面的State混入RouteAware,监听didPush(进入页面)、didPop(离开页面)生命周期
  • 自动计算页面停留时长,页面销毁时自动上报携带时长参数的自定义事件

注意:新增的自定义参数需要先登录Firebase控制台,在Analytics的「自定义定义」板块添加对应的参数名称,等待几小时数据同步后就可以在报表里筛选时长维度做统计了。如果需要把自定义事件和Firebase默认的session时长做关联,可以额外上报app_instance_id参数,通过analytics.appInstanceId即可获取对应ID,后台可通过该ID关联匹配两类事件的维度数据。


内容的提问来源于stack exchange,提问作者Mohammad Norhamizan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:30:03