西瓜客户端埋点&#x5

西瓜客户端埋点&#x5

西瓜客户端埋点实践:基于责任链的埋点框架_字节跳动技术团队官方博客-CSDN博客


上面左图是西瓜放映厅的推荐列表,右图是某个影片的详情页,点击推荐列表的影片卡片,会跳转到详情页。作为最常见的消费场景,列表和详情都有收藏按钮,我们希望知道每一个收藏事件发生的场景,方便后续优化收藏功能,以及结合用户收藏的情况,优化推荐模型。
埋点需求是上报收藏按钮的点击事件 click favorite,要求包含收藏影片的信息,所在的场景信息等。
如果收藏事件发生在列表页,会上报如下的内容
{
   event :  click favorite ,
   params : {
     video id :  123 , // 影片ID
     video type : 2, // 影片类型
     page name :  feed , // 当前页面
     tab name :  long video  // 当前所在的底Tab
     channel name :  lvideo recommend , // 当前所在的频道
  }
}
如果收藏事件发生在详情页,会上报如下的内容
{
   event :  click favorite ,
   params : {
     video id :  123 , // 影片ID
     video type : 2, // 影片类型
     page name :  detail , // 当前页面
     from page :  feed , // 来源页面
     from tab name :  long video  // 来源底Tab
     from channel name :  lvideo recommend , // 来源频道
  }
}
现有方案
直接传参
对于上面的埋点需求 click favorite,我们假设列表页和详情页的层级结构是:
详情页:VideoDetailActivity(详情页 Activity) -> BottomActionBar(底部操作栏)
当然实际情况因为项目的组件抽象复用等原因,往往会有更复杂的层级。直接传参要怎么实现这个埋点需求呢:
列表页的 click favorite 埋点,需要从底 Tab 把所在 Tab 信息传给频道,频道再把底 Tab 和频道信息传给卡片
class CinemaTabFragment {
    fun getItem() {
        fragment = VideoChannelFragment()
        // 配置频道所处的底Tab
        fragment.tabName =  long video
        return fragment
    }
}
class VideoChannelFragment {
    var tabName
    var channelName
    fun onBindViewHolder(position) {
        holder.videoInfo = items.get(position)
        // 配置卡片的tabName和channelName
        holder.tabName = this.tabName
        holder.channelName = this.channelName
    }
}
class VideoViewHolder {
    var tabName

Related Keywords

, Product Manager, Channel, View Or Text, Text View, View As Home Channel, Reserved New Old, Beijing Hangzhou Shanghai, ப்ராடக்ட் மேலாளர், சேனல், உரை பார்வை,