版权声明:
本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。
未经允许,不得转载。
一、说在前面
最近在看无埋点的统计方案和技术实现,正好看到《美团点评前端无痕埋点实践》这篇文章,它简单介绍了一些无痕埋点的技术实现原理。但是,它没有涉及细节。有兴趣的可以先去「美团点评技术团队」众号看看那篇文章,或者在本文底部点击『阅读原文』,可以直达美团的这篇技术分享。
既然文章里没有里只是介绍了实现原理,没有介绍细节,那么就美团的实现方案,我研究了一下具体的实现,分享出来给大家参考一下,不一定是对方的原实现,但是思路是一样的。
因为涉及的内容比较多,准备拆成几篇文章单独说明不同的技术点,这里只是一个预告,后续会以不同主题的文章,单独拆开来讲解。
二、美团的大概思路
美团点评的大概思路,就是做到重写 App 内用到的对应的UI 控件,然后修改我们需要事件的监听,例如 onClick 事件,然后在真实触发该事件的时候,判断当前控件是否需要打点统计,如果需要,就向统计系统打一个计数点。
既然弄清楚了它实现的原理,虽然重写所有 UI 控件也有些许成本,但是最大的难点,如何做到低成本的替换掉一个现有项目中,所有用到的 UI 控件的思路,来接下去进行讲解。
美团的最终方案是使用 Gradle plugin 的形式,在编译期间,修改 UI 控件的父类,然后再进行打包的形式替换,这样以牺牲编译期的时间,而不会影响到运行的效率。这个已经和对方联系过,美团的人表示此插件并没有打算开源出来。所以才会有这一系列的文章。
公众号后续的文章大概会拆分为(可能实际上会再调整):
- 现有无埋点方案调研。
- 利用AppCompatDelegate代理替换 UI 控件。
- 使用Gradle 插件,在编译期间替换 UI 控件。
- 如何优雅的重写 UI 控件。
- 关于无埋点方案的一些思考
三、最后再唠几句
就在我写这篇文章的时候,美团已经在他的公众号里表示过两天会以斗鱼直播的形式分享出无痕埋点的技术细节。
本来以为本系列文章会废掉,但是认真看了下美团的分享人,是一个 iOS 的工程师,会一些前端和 Android,猜测可能到时候也不会分享太多 Android 实现的细节,这个后续也和对方确认过了,所以还是决定发出来大家参考一下,如有有什么错漏的地方,可以在我文章下面指出来,我们再交流一下。
那么我们就敬请期待吧!
公众号二维码.jpg
网友评论