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 报告中文版放送

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

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

用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…

tomcat结合nginx使用小结

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

如何学好GIS,彻底领悟这几句话就够了!!!

目 录前言1. GIS起源于地图学2. GISer心中要有地图3. 空间数据是GIS的血液4. 空间分析是GIS的灵魂5. GIS是智慧城市的操作系统前言 地理信息系统 (GIS)是以可视化和分析地理配准信息为目的,用于描述和表征地球及其他地理现象的一种系统。 地…

【iVX 初级工程师培训教程 10篇文拿证】07 08 新闻页制作

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

【WEB API项目实战干货系列】- WEB API入门(一)

这篇做为这个系列的第一篇,做基本的介绍,有经验的人可以直接跳到第二部分创建 ProductController。创建 Web API 项目 在这里我们使用VS2013, .NET 4.5.1创建一个Web API 2的项目选择项目WEB API模板, 在最下方的MVC主要是默认会自带微软的API Helper, 使…

Android之打开继承DialogFragment对话框里面EditText获取光标并且弹出键盘把底部布局顶上去

1 需求 打开继承DialogFragment对话框里面EditText获取光标并且弹出键盘把底部布局顶上去 2 效果爆照如下 打开这个DialogFragment 3 关键代码实现 override fun onViewCreated(view: View, savedInstanceState: Bundle?) {super.onViewCreated(view, savedInstanceState)…

【iVX 初级工程师培训教程 10篇文拿证】06 数据库及服务

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

J2EE开发技术点4:ajax技术

前言 AJAX 是在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术。需要知道的是,Ajax技术并不是一项新的技术,而是使用现有技术解决问题的新方法。Ajax(Asynchronous JavaScript and XML)也叫异步Jav…

【WEB API项目实战干货系列】- 接口文档与在线测试(二)

这一篇我们主要介绍如何做API帮助文档,给API的调用人员介绍各个 API的功能, 输入参数,输出参数, 以及在线测试 API功能(这个也是方便我们自己开发调试) 我们先来看看我们的API最终帮助文档及在线测试最终达到的效果: 概要图GET API添加产品API:删除产品 …