viewtracker

iOS实现介绍(TMiOSViewTrackerSDK)

  • 介绍

规范2101和2201的埋点,实现了一套无痕采集的方案。 同时提供数据给棱镜(天猫数据版)展示。

  • 原理

    • 曝光事件采集原理

      通过hook UIView的生命周期函数,监测其可见性。
      

      影响UIView是否在屏幕可见的因素有

      • 是否添加到UIWindow
        • willMoveToWindow:
        • didMoveToWindow
      • frame
        • layoutSubviews
        • 在其他事件触发时,要判断当前view相对于window的rect。
      • hidden
        • setHidden:
        • CALayer的setHidden: (UITableViewCell在复用的时候会触发该方法)
      • alpha
        • setAlpha
    • 点击事件采集原理

       通过hook UIWindow的sendEvent函数,判断如果是点击事件,且controlName不为空,就上报。
      如果controlName为空,则上溯找到包含target的且controlName不为空的控件,上报。
      

      另外一种方案是就是hook UIControl的sendAction:to:withEvent函数。

  • 如何埋点

    在猫客内,只需要设置了UIView的controlName,就会采集该view的曝光和点击事件;
    UIView的args属性用来设置业务参数。
    UIViewController的pageCommonArgs属性用来设置页面的通用参数。
    在该页面内的点击和曝光事件上报时都会附加页面的通用参数。
    比如: 直播详情页,每个控件的埋点事件都需要设置vvid的值。通过页面通用参数中设置vvid即可省略了给多个控件设置vvid的过程。
    UIViewController的pageName属性,用来标识UT日志中的页面名称。如果未设置,则去TMiOSUserTrack的plist里面查找。

  • 覆盖场景

    • tab切换
    • UIScrollView滚动
    • 页面切换
    • 前后台切换
  • 未覆盖场景

    • 点击的手势识别
    • 曝光时候的view覆盖,如popWindow等。

results matching ""

    No results matching ""