APP无埋点流程

最近无埋点技术很是流行,抽空研究了下诸葛IO,talkingData以及百分点这些业内知名公司的无埋点SDK,抽取其中重要的信息供大家参考:
1、首先什么是无埋点呢,其实所谓无埋点就是开发者无需再对追踪点进行埋码,而是脱离代码,只需面对应用界面圈圈点点即可追加随时生效的事件数据点。

无埋点的好处
其实无埋点并不是完全不用写代码,而是尽可能的少写代码。开发者将SDK集成到项目中,配置并初始化SDK之后,接下来就可以进行可视化操作。这个可以不依赖开发者,一些实施人员都是通过后台的配制,就达到埋点的配制,还有新增埋点改动都是很方便的实现。最后就是配制和代码,可以很灵活地扩展,动态地更新。
2、上面我们写道无埋点要进行可视化操,参考百分点、talkingData采用相对简单可行的办法是对当前的屏幕进行截图,截图完了以后做一些处理。做一些压缩,然后传到服务端,服务端进行展现,就把屏幕截图展现出来。屏幕截图做完了,下一步,需要在管理界面进行配置,对于可点击的组件进行配置,就需要把这些界面框起来展现给使用者。下面是截取的talkingData的可视化操作为例,为大家展示可视化埋点的流程:
项目嵌码之后,进入可视化链接页面,摇一摇连接设备:
摇一摇,连接设备
链接成功之后,平台获取当前界面截图:
为要统计的界面元素命名事件,添加追踪点,至此埋点操作完成:
选择界面中的元素来追加事件

这里需要指出一下,无埋点只是针对一些简单的操作统计,如按钮点击的次数、时间等。如果是比较复杂的应用场景,例如支付事件,需要统计商品名称、价格、数量等,这就需要通过埋点来收集详细的参数。
3、无埋点实现方式:
整个技术里面比较关键的一点是怎么拿到屏幕控件信息。这一块儿主要就是三个问题。第一,就是获取时机。第二,就是拿控件什么信息,什么信息是需要用到的。第三,就是比较关键的,如何生成控件的唯一ID,ID是在程序内部生成。需要保证在不同的手机上面,这些ID是一样的。还要保证每一次启动ID都是不变。
首先是Android:


然后,接下来我们可以看一下iOS,同样的,也是面临三个问题:


iOS无埋点的核心技术是利用苹果的runtime机制,把系统事件、点击事件的指针替换成我们自己的函数来监测用户的操作,我们在自己的函数中采集并发送需要的数据。
4、遇到的问题和解决办法
第四部分,讲一下我们在实现无埋点技术的时候,遇到了什么坑?以及采用什么方法来解决这些坑。
长连接断开的问题,我们之前是设计每隔5秒发送一次截图,一般不会产生断开。但是,后面做了一些优化,我们不会每隔5秒就发,这样就会导致这个链路长时间没有数据。然后,我们解决方法也是采取了业界通用的方法,发一个心跳,通过发一个心跳来保证这个链路一直是活着的。
第二个问题就是摇一摇遇到的问题,我们遇到的问题是这样的,你拿着手机摇一摇,什么时候连接成功呢?你得给用户一个反馈,要不用户就是一直摇下去,我们后来想的方法是,摇成功给他一个振动,振动了,用户有反馈,就知道这个连接成功了,不需要摇了。然后,就是带来另外一个问题。有时候运动当中,又会产生一些误操作,就是导致手机会振一下。这个怎么解决呢?我们就想了一下,可以通过给服务端有一个交互,管理界面里面发现有一个请求过来要连了会有一个确认的按钮,用户确认之后,SDK收到确认消息以后,我们再去振动。这样的话,既可以给用户反馈,也不会说在它误操作情况下振动。这样就不会造成误操作,也不会无缘无故地进行振动。
界面传输的优化,因为在整个配制过程当中,传输数据量最大的就是屏幕的截图。怎么把这个优化一下?就可以更好地提升我们的体验度,还有流畅性。图片采用jpeg格式,把图片质量选择0.6,刚好是可以看清楚的。然后,也最大限度地降低了这个图片大小。
然后,整个传输效率,有这样一个问题。我在当前界面,默认就是5秒传一次。我点了一下,我在当前一个列表界面,点了一下切换到详情界面。最坏的情况下就是等5秒,加上网络传输效果,管理界面就看到新的屏幕。这种体验是很差的,因为实时性太差。所以,这一块做了一个优化。尽量让它实时传过去,我们在屏幕切换的时候,主动发一次截图。这样的话,等的时间就是网络传输的时间,不用等5秒固定的时间。这一块用户体验上面就是更流畅一些。
有的时候屏幕界面没有任何的变化的,这个时候每隔5秒传一次没有必要的。所以,我们把屏幕截图做一个md5进行保留,传输时对比md5,当切换到下一个的时候,我们就发新的屏幕截图。这样就会减少很多不必要的屏幕的传输。然后,也会节省很多的流量。
控件ID重复的问题。前面说过我们的ID生成规则可以解决90%的问题,但是,有一些问题还是解决不了。生成ID重复,重复的话就会产生一个什么样的效果和问题?同样两个按纽,一个注册,对于注册定义了一个埋点,就是注册点击,用户实际操作的时候点登陆的时候也是发过来一个注册点击消息。这样就是统计不准,因为这种比较的特殊,我们采用的解决方案,通过服务端发一些特殊配制。把这些配制里面,因为这两个button里的text不一样,一个是注册,一个是登陆。我们把text信息放在ID的这个生成规则里面,最终生成两个不同的ID,也是可以解决这个问题。
还有一个难点通过可视化埋点的事件名称会先通过平台传到服务器,服务器再传给所有用户APP中的SDK,SDK进行判别是哪个界面的哪个事件被动态埋点了,然后进行统计,并发送数据到后台进行统计分析。判断某个界面的某个事件应该会比较棘手,在这里先做一个标记。
当然在写SDK的过程中肯定还有很多的坑,我会在以后的时间里一一记录下来,同时也欢迎大家提出自己的见解。
主要参考:以上是之前找的资料,时间久了就忘了出处,故没有粘贴作者信息,但这些信息给自己在实践的过程中提供了很多的指导,这里多谢作者,以后找到出处一定补上。
终于找到来源了,嘿嘿嘿:http://chuansong.me/n/952687251048#10006-weixin-1-52626-6b3bffd01fdde4900130bc5a2751b6d1


作者:woniu
链接:https://www.jianshu.com/p/6f47fc648e69
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/286530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Esri Maps For Office制作漂亮的地图

ArcGISOnline是一个基于云架构的资源中心,在这里你可以发布自己的地图资源、浏览其它ArcGIS爱好者发布的应用程序;总之,它为我们提供了一个在线交流的场所。 EsriMapsForOffice是ArcGISonline推出的一个Office环境的插件,可以让我们在Excel、Powerpoint中进行制图,就像在…

《什么是 eBPF》O'Reilly 报告中文版放送

祝大家端午安康,国泰民安,世界和平。今年端午节,鄙人人在北京,所在区有中风险地区,而老家又是所在省的唯一一个中风险地区,既出不了京,也回不了家。可谓有家不能回,真是每逢佳节倍思…

介绍一个代码管理系统-Git

Git是一个跨平台的代码管理系统,据说比SVN好很多,呵呵!! http://git.or.cz/ 一个基于Git管理的代码共享网站 http://github.com/ 在windows下的客户端程序(msysgit):http://code.google.com/p/msysgit/ 还没有图形客户…

优秀博客链接(linux c/c++ java go php android ios 前端 j2ee windows linux 算法 ACM 深度/机器学习 AI opencv nlp)

pudn阿甘兄 前端 服务端 底层 移动端 大数据 云计算 AI 培训机构的课程差不多就这一套了 大数据 AI NLP 高等数学 LeetCode、《数据结构与算法之美》学习笔记、AI前端资料学习,vue.js react.js flutterleetCode刷完的神机器学习数据挖掘基础Linux c/c大神 目前cs…

一键将Python2代码自动转化为Python3

Python2的代码直接在Python3环境运行的话会报错误: 如果大量的代码,无论是批量替换,还是逐行修改都够累的,这活儿表示不能干!!! 有没有办法一键转换呢? 百度了一下发现网上的方法如…

【前端就业课 第一阶段】HTML5 零基础到实战(十)JavaScript基础一篇入门

注意:手机(APP)打开,内容显示更佳,不会的私聊博主即可 想要拿代码或加入学习计划(** 博主会监督你并且教你写文章 **)的拉到最下面(PC端Web打开)加博主即可,目…

推理集 —— 实证

现实世界的诸多事就像物理定律,而不是数学定理,也即不保证绝对正确,而需要不断地验证,实证。 不能不经实证就轻言一件事是行还是不行,尤其在事情如果实证的成本较低,比如今天图书馆是不是开门,路…

一款开源的跨平台实时web应用框架——DotNetify

今天给大家介绍一个开源的轻量级跨平台实时HTMLC#.NET Web应用程序开发框架——DotNetify,允许你在C#.NET后端上创建具有React、React Native、Vue或Blazor 前端的实时、响应式、跨平台应用程序。它的主要特点是:简单且轻量响应式后端MVVM内置实时解决方…

【GeoDataBase】Geodatabase智能化操作:属性域

Geodatabase中所包含的不仅仅是要素类、要素集和表,还可能包含关系类、注释类、几何网络、拓扑等不同的结构和类别。 地理数据库按照面向对象的模型存储地理信息,也可以将其非空间信息保存在表中。对于要素和表可以设置一些规则进行限制,对属性的约束称为属性域。 属性域是描…

Android之All children of ConstraintLayout must have ids to use ConstraintSet

1 问题 Fatal Exception: java.lang.RuntimeException: All children of ConstraintLayout must have ids to use ConstraintSetat androidx.constraintlayout.widget.ConstraintSet.readFallback(ConstraintSet.java:459)at androidx.constraintlayout.motion.widget.MotionS…

Lua性能优化

规则1:不要优化。 规则2:仍然不要优化(专家除外) 当用Lua编程时,这两条规则显得尤为重要。Lua以性能著称,而且在脚本语言中也因此而值得赞美。 然而,我们都知道性能是编程的一个关键因素。具有复…

常用的LINQ to SQL 用法

一、Where操作 适用场景:实现过滤,查询等功能。 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句。 Where操作包括3种形式,分别为简单形式、关系条件形…

用Python写一个将Python2代码转换成Python3代码的批处理工具

之前写过一篇如何在windows操作系统上给.py文件添加一个快速处理的右键功能的文章:《一键将Python2代码自动转化为Python3》,作用就是为了将Python2的文件升级转换成Python3的文件。之后,有朋友问,如果有很多文件需要转换&#xf…

WP 手机Lumia 820 锁屏密码的POJI研究

Windows Phone lumia 手机锁屏密码的POJI研究大家好今天给大家分享一个最新研究案例,近日笔者Nokia Lumia 820,由于客户密码失误太多,导致锁屏23000余分钟,,请看:型号Nokia Lumia820条件:Lumia8…

ArcGIS10从入门到精通系列实验图文教程(附配套实验数据持续更新)

文章目录1. 专栏简介2. 专栏地址3. 专栏目录1. 专栏简介 本教程《ArcGIS从入门到精通系列实验教程》内容包括:ArcGIS平台简介、ArcGIS应用基础、空间数据的采集与组织、空间数据的转换与处理、空间数据的可视化表达、GIS空间分析导论、矢量数据的空间分析、栅格数据…

【iVX 初级工程师培训教程 10篇文拿证】09 聊天室制作

目录 【iVX 初级工程师培训教程 10篇文拿证】01 了解 iVX 完成新年贺卡 【iVX 初级工程师培训教程 10篇文拿证】02 数值绑定及自适应网站制作 【iVX 初级工程师培训教程 10篇文拿证】03 事件及猜数字小游戏 【iVX 初级工程师培训教程 10篇文拿证】04 画布及我和 iVX 合照 【iV…

为什么Dapr是比SpringCloud和Istio更优雅的微服务框架?

作者:徐磊文章首发地址:https://smartide.cn/zh/blog/2022-0601-dapr/Dapr 是微软主导的云原生开源项目,2019年10月首次发布,到正式发布 V1.0 版本的不到一年的时间内,github star 数达到了 1.2万(现在已经…

Android之模拟网络请求返回http 502、400、401、402错误码

1 问题 app 网络框架协程没有做网络异常捕获处理,想本地测试网络接口,希望网络接口返回Http的错误码 比如502、400、401、402 2 解决办法 1、pc安装Fiddler Everywhere 2、让Fiddler Everywhere支持抓http和https的包 3、保持手机和电脑同一个局域网&am…

12c分页查询特性FETCH FIRST ROWS,OFFSET ROWS FETCH NEXT ROW LIMIT Clause子句

Database 12c的FETCH FIRST ROWS特性可以简化老版本中ROW_NUM()或ROWNUM的分页排序写法, 大幅节约开发花在分页查询语句上的时间。 row-limiting子句用以限制某个查询返回的行数 可以通过FETCH FIRST/NEXT关键字指定返回结果的行数可以通过PERCENT关键字指定返回结果…

tomcat结合nginx使用小结

tomcat结合nginx部署 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额。那究竟它有什么作用呢?可能很多人未必了解。 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了。…