TalkingData灵动分析技术揭秘(下).docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TalkingData灵动分析技术揭秘(下)

TalkingData灵动分析技术揭秘(下)上期重点说明了TalkingData灵动分析的结构和流程,使大家对于灵动分析的技术框架有一个基本的认识。本期,我们就安卓和iOS系统SDK实现细节做更加详细的说明,让大家看到毛孔级的干货分享。闲话少说,直奔主题。安卓系统的技术点【如何同步手机界面到管理后台】在事件管理后台中动态添加事件的基础,是要能够同步应用界面到管理后台中。界面同步方案中有两个关键点:1. 通过Canvas来获取屏幕内容:void android.graphics.Canvas.drawBitmap(Bitmap bitmap, float left, float top, Paint paint);2. 获取view属性位置相关:x,y,width,height,偏移等,唯一性相关:id,类名等。绘制相关:hidden,alpha等view的属性有很多,哪些属性是应该上传的,哪些属性是可以忽略的,为了动态的调整这些,可以使用反射的机制来实现。具体说,就是在进入UI同步状态时,服务器将一个属性配置单下发到App中,SDK通过对配置的解析,利用反射执行配置中的指定方法获取view的响应属性数据。这也是配置即代码的一种实现。完成以上两项内容,就可以把数据发送至管理后台,并绘制出手机的内容了。 【如何绑定事件至控件】Android系统定位一个控件,需要先获取当前Activity的rootview,方法是:View rootView = activity.getWindow().getDecorView().getRootView();然后遍历动态事件列表,用每个动态事件中控件的唯一标示去匹配rootview中的内容,匹配规则:viewClassName id tag contentDescription 当符合条件时,就给当前的view添加一个AccessibilityDelegate对象View.AccessibilityDelegate ret = null;try { Class? klass = v.getClass(); Method m = klass.getMethod(getAccessibilityDelegate); ret = (View.AccessibilityDelegate) m.invoke(v);} catch (Exception e) {}AccessibilityDelegate newDelegate = new AccessibilityDelegate(ret);view.setAccessibilityDelegate(newDelegate);【如何监测点击事件】通过分析Android系统View类的源代码,发现可利用Android中View类的方法来实现事件触发的:sendAccessibilityEvent(int eventType)该方法实现如下:public void sendAccessibilityEvent(int eventType) { if (mAccessibilityDelegate != null) { mAccessibilityDelegate.sendAccessibilityEvent(this, eventType); } else { sendAccessibilityEventInternal(eventType); }}即只要设置了代理就可以对具备Accessibility能力的view实现点击事件的响应。View.AccessibilityDelegate具体说明请参考Android的开发者文档。【界面主线程占用是否有影响】界面的监测操作是要放在界面主线程中,开始我们担心这样会不会对应用本身的界面交互产生影响?经过实际测试,这样实现是完全没有问题的,应用不会受任何影响。另外,事件的侦测是实时的循环监测,这样自定义的事件越多,必然会有占用时间,不过代价很小(毫秒级),实测中也没有发现对应用交互有可感知的影响。【如何应对界面动态布局】为了应对页面的动态布局,我们需要在单一线程中实现事件监测,通过循环操作,使每个事件都对当前页面的所有view进行匹配。经过实测,也没有发现对应用交互有可感知的影响。【如何保持事件触发链】处理完事件后,要交还给系统继续处理,不要扔掉,否则会导致应用本身工作异常。iOS系统的技术点【如何同步手机界面到管理后台】iOS平台,同步界面的操作分为几个步骤:1. 截屏通过以下方法获取屏幕截图:UIGraphicsGetImageFromCurrentImageContext()2. 获取控件属性根据服务器下发配置表获取每个对象所需要的属性。3.

文档评论(0)

dlive45 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档