APP无埋点流程

发表于:2018-2-12 09:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:suikhan    来源:简书

分享:
  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的过程中肯定还有很多的坑,我会在以后的时间里一一记录下来,同时也欢迎大家提出自己的见解。
  主要参考:以上是之前找的资料,时间久了就忘了出处,故没有粘贴作者信息,但这些信息给自己在实践的过程中提供了很多的指导,这里多谢作者,以后找到出处一定补上。

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
22/2<12
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号