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

