加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 建站 > 正文

揭秘!如何用Flutter设计一个100%准确的埋点框架?

发布时间:2019-08-13 09:00:13 所属栏目:建站 来源:兰昊
导读:副标题#e# 用户行为埋点是用来记录用户在操作时的一系列行为,也是业务做判断的核心数据依据,如果缺失或者不准确将会给业务带来不可恢复的损失。闲鱼将业务代码从Native迁移到Flutter上过程中,发现原先Native体系上的埋点方案无法应用在Flutter体系之上。

那么我们的问题就是如何算出坑位在屏幕内曝光面积的比例。要算出这个值,需要知道以下几个数值:

  • 容器相对屏幕的偏移量
  • 坑位相对容器的偏移量
  • 坑位的位置和宽高
  • 容器的位置和宽高

其中坑位和容器的宽和高很容易获取和计算,这里就不再累述。

获得容器相对屏幕的偏移量

  1. //监听容器滚动,得到容器的偏移量 
  2. double 
  3.  _scrollContainerOffset = scrollNotification.metrics.pixels; 

获得坑位相对屏幕的偏移量

  1. //曝光坑位Widget的context 
  2. final 
  3.   
  4. RenderObject 
  5.  childRenderObject = context.findRenderObject(); 
  6. final 
  7.   
  8. RenderAbstractViewport 
  9.  viewport =  
  10. RenderAbstractViewport 
  11. .of(childRenderObject); 
  12. if 
  13.  (viewport ==  
  14. null 
  15. ) { 
  16.    
  17. return 
  18. if 
  19.  (!childRenderObject.attached) { 
  20.    
  21. return 
  22. //曝光坑位在容器内的偏移量 
  23. final 
  24.   
  25. RevealedOffset 
  26.  offsetToRevealTop = viewport.getOffsetToReveal(childRenderObject,  
  27. 0.0 

逻辑判断

  1. if 
  2.  (当前坑位是invisible && 曝光比例 >= { 0.5) 
  3.  
  4. 记录当前坑位是visible状态 
  5.  
  6. 记录出现时间 
  7.  
  8. }  else if (当前坑位是visible && 曝光比例 <  0.5 ) { 
  9.  
  10. 记录当前坑位是invisible状态 
  11.  
  12. if (当前时间-出现时间 >  { 500ms )
  13.  
  14.  
  15. 调用曝光埋点接口 
  16.  
  17.  

点击坑位

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读