扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:业界供稿 2015-10-14 17:58:16
关键字: 开发 数据统计分析 灵动分析 TalkingData
ZD至顶网软件频道消息:在不久前的TalkingData T11全球移动大数据峰会上,TalkingData正式对外发布了灵动分析系统。从现场发布的视频及此前的各种介绍来看,TalkingData的灵动分析系统与以往的数据统计分析平台不同,显得更为灵活,也更为自由,引起了笔者极大的兴趣。
时下的App正逐渐成为移动互联网最大的入口,在这种大背景下,我们姑且不说透过App产生的各种数据对各行各业的影响,单说作为App运营人员而言,总是要知道用户是如何来使用你的应用的吧?传统的数据统计分析系统,除了在App内整合数据统计SDK外,如果运营人员想要获取更多的数据,比如UI中不同元素的点击、跳转等,就要通过”自定义事件”对这些按钮、下拉框,甚至是滑屏、滚动、拖拽等”事件”进行独立的检测与跟踪。这个过程是比较复杂的,需要针对单独的事件逐一添加追踪代码。如果应用有更新,那么这些事件的追踪代码也需要更新;如果追踪事件需要更新,那么应用也要调整代码重新编译,并且重新上架。
按照TalkingData的介绍,灵动分析目前提供的灵动事件功能,就是专门用于解决自定义事件添加、管理和统计的功能。从描述上来看,这个功能主要解决的就是针对数据分析需求的开发工作量,以及调整数据分析系统带来的应用重新发布等问题。除此之外,对于需要深度数据化运营的服务或者应用模式来说,减少研发工作量,意味着运营人员能够对数据跟踪等操作直接设置,如此一来数据追踪这件事得以与业务更为贴合,也更为高效。
试用体验
那么,灵动分析提供的功能是否能够达到要求,是否可以做到零代码开发呢?为此我们专门申请了一个TalkingData账号,准备亲自试用一下”灵动分析”。需要说明的是,灵动分析是TalkingData最新开发的平台型数据分析能力,目前TalkingData App Analytics已经正式支持灵动分析,后续TalkingData Game Analytics、Ad Tracking也将支持。因此我们可以把灵动分析看做是TalkingData旗下数据分析工具的一次系统级升级。
图1:App Analytics率先支持灵动分析
登陆TalkingData产品后台以后,我们首先要做的是阅读一下开发文档,毕竟要想用到灵动分析,还是需要集成一个TalkingData的SDK的。这个过程并不复杂,TalkingData的文档中心对SDK集成方面的描述还是很清晰的。不过说到底,小编是不会搞编程的,这部分工作小编是请我们的研发人员代为完成的,据研发的同事说集成的过程并不复杂。集成完毕后,封装成App,小编在测试手机上装好了一个集成了SDK的测试应用,测试环境就算准备完毕了。
图2:登陆后选择测试应用
测试过程本身并不复杂,我们试用了灵动分析目前的主要功能“灵动事件”,这一功能允许运营人员通过手机的“摇一摇”,将测试设备与TalkingData数据分析系统关联,然后添加各种自定义事件。首先我们登陆App Analytics,然后选择测试应用,进入测试应用的分析页面,再展开页面左侧的”事件和转化”,就可以看到”灵动事件”了。
点击灵动事件,就可以看到灵动事件的界面了。在这里,我们就可以开始打开应用“摇一摇”了。这是用于连接系统与测试设备的必要过程。摇晃手机后,系统即可捕捉到测试设备的一些基本信息,以便用户做确认。理论上装了应用摇起来的手机都可以作为测试设备。测试设备与系统匹配完成后,应用的界面会被实时传输到系统平台上。之后就可以根据需要在界面上点击元素添加相应的自定义事件了。添加过程非常简单,只要点击界面元素,然后给事件起一个名字,就算完成。但此时的事件仅对测试设备有效,在正式部署之前,我们可以通过点击测试设备上相应的界面元素来验证事件是否添加成功。
图3:进入灵动事件
图4:打开手机上的应用摇一摇
图5:确认连接测试设备后,应用界面就被传送到分析后台,可以开始设置自定义事件了
图6、图7:点击想要设置追踪时间的元素,添加名称即可完成设置
由于TalkingData数据分析系统具有实时反馈能力,灵动事件可以做到数据实时上传——我们在这边点一下添加了事件的元素,系统立刻显示点击次数。事件添加、测试完毕后,我们可以点击”全部生效”,即可将新添加的事件部署到所有应用。整个过程非常简单,无需开发,也不用重新上架应用。
图8、图9:设置完成后即可在手机上进行测试,系统会提供实时数据反馈
到这,小编觉得这有点黑科技的意思了。这灵动分析是通过什么技术实现的呢?
灵动分析的技术关键点
Android如何同步手机界面到管理后台
在事件管理后台中动态添加事件的基础,是要能够同步应用界面到管理后台中。界面同步方案中有两个关键点:
1. 通过Canvas来获取屏幕内容:
void android.graphics.Canvas.drawBitmap(Bitmap bitmap, float left, float top, Paint paint);
2. 获取view属性
位置相关:x,y,width,height,偏移等,
唯一性相关:id,类名等。
绘制相关:hidden,alpha等
完成以上两项内容,就可以把数据发送至管理后台,并绘制出手机的内容了。
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的开发者文档。
iOS平台,同步界面的操作分为几个步骤:
1. 截屏
通过以下方法获取屏幕截图:
UIGraphicsGetImageFromCurrentImageContext()
2. 获取控件属性
根据服务器下发配置表获取每个对象所需要的属性。
3. 上传数据
将屏幕截图进行base64编码,并和控件属性一起上传到服务器。
4. 管理后台界面展示
管理后台绘制手机屏幕的截图,根据获取到的x、y、w、h、alpha、hidden等属性绘制控件的范围。
绑定事件到控件的步骤是:
1. 从服务器获取动态事件列表,根据每条动态事件数据创建一个EventBinding对象。
2. 获取当前window的rootViewController:
UIViewController *root = [[UIApplication sharedApplication] keyWindow].rootViewController;
3. 遍历动态事件列表,用每个动态事件中控件的path去匹配rootViewController中的内容,匹配规则是:
ClassName && tag && 所在容器中的成员变量名 && Button中图片的指纹 && title
对控件点击事件进行监测的步骤是:
1. 找到要监控的控件时,就给当前控件添加一个Action:
[control addTarget:self action:@selector(execute:) forControlEvents:UIControlEventTouchUpInside];
2. 监控事件被触发时相应的EventBinding对象得到响应,生成事件数据上报服务器进行统计。
前面小编也说过自己不懂编程,这些内容显然不可能是小编自己写出来的。这部分的技术要点,小编是引用自TalkingData CTO的知乎专栏文章内容。关于灵动分析的技术要点,TalkingData CTO肖文峰早就对外公布过了。这种自己公布技术要点的行为,在山寨成风的国内互联网行业还是比较少见的。
总结
对于我们媒体来说,读者对于内容的好恶是我们最关注的事情。通过灵动事件,我们可以轻易的对我们自己的应用里每个栏目、每篇文章的阅读量进行监控。不要忘了,灵动事件只是TalkingData App Analytics中的一部分而已,结合App Analyitics提供的其他数据,让我们可以方便的了解到我们的读者是如何使用我们的应用,在什么情况下阅读我们的文章的。然后才有可能谈及如何优化应用,如何优化内容。
通过实际上手体验,灵动分析的整体感觉还是不错的。过程不复杂,很简单,甚至可以说很好玩。对于越来越重视数据分析的当下而言,灵动分析带来的可能性还是比较多的,不过目前的功能略微单一了一点,希望后续能够加入更多的功能,比如实时的A/B测试之类的,应用范围会更为广泛。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者