MixPanel代码阅读笔记-初探

埋点技术简介

埋点就是数据收集,数据采集是大数据核心要素,方式也不尽相同,移动端常见的埋点技术有3种:代码埋点,可视化埋点,无埋点。

代码埋点:

用预先写好的代码埋在事件交互的代码中发送数据。APP或者界面初始化的时候,初始化第三方数据分析服务商的SDK,然后在某个事件发生时就调用SDK里面相应的数据发送接口发送数据。例如,我们想统计APP里面某个按钮的点击次数,则在APP的某个按钮被点击时,可以在这个按钮对应的 OnClick 函数里面调用SDK提供的数据发送接口来发送数据。

优点:精准控制, 准确的发送数据,可以自定义事件、属性,传递丰富的数据到服务端;缺点:埋点代价比较大,每一个控件的埋点都需要添加相应的代码,不仅工作量大,而且限定了必须是技术人员才能完成;其次是更新的代价比较大,每一次更新埋点方案,都必须改代码,然后通过各个应用市场进行分发,并且总会有相当多数量的用户不喜欢更新APP,这样埋点代码也就得不到更新了。

可视化埋点:

用可视化的方法来代替代码埋点把代码和业务逻辑分开。举个例子,像游戏公司现在开发会把资源文件和配置信息和代码分开,用户更新游戏只要下载资源文件和配置就可以了。

在国外,以 Mixpanel 为首的数据分析服务商,都相继提供了可视化埋点的方案,Mixpanel将之称作为 codeless。而国内的 TalkingData、诸葛IO 等也都提供了类似的技术手段。

无埋点:

和可视化埋点类似,二者的区别是可视化埋点通过界面配置来决定要统计的事件来源,而无埋点是经可能把所有能收集的数据全部收集一遍,再通过后台配置要留下哪些统计分析。

缺点是:不能自定义不够灵活,统计范围广量大会给服务器和网络传输带来负担。


MixPanel项目准备

登录官方主页www.mixpanel.com,创建一个app项目:

选项setting->project settings 获取你的token

拿到token后即可接入SDK了,在 appdelegate  完成代码集成步骤:




[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"mixpanelToken": MIXPANEL_TOKEN}];




    NSString *mixpanelToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"mixpanelToken"];




之后选择setting->codeless tracking 进入web可视化调试页面,通过websocket连接手机服务,保持通信,这就能可视化埋点了。(要选中对应你的设备才能连接上,比如模拟器option+左键对应的web端模拟器设备选项,默认的是真机要切换一下)


事件点选和绑定

mixpanel会把手机屏幕做截图处理通过websocket发到web端接受展示在屏幕上,而web端还要做绘制控件操作,让屏幕的按钮可点选可绑定。

可以看到绑定后的事件可编辑可删除,修改完后点击右下角的deploy部署按钮即可生效。取消则直接断开socket通信并退出当前页面。


验证我们的埋点数据

点击我们的埋点按钮,在web端左上角会看见带着事件名称的标记,红色圈圈里有2发事件,一个是代码埋的和另一个可视化埋点都会通过界面反馈。

其他功能有待探索

a/btest:

用于给非技术人员(运营人员、测试、产品)做实验设计,仅仅只是在元素、控件的层面的a/btest。当产品稳定后,更换app的局部控件,如背景颜色,文案,大小等属性,它的目的是点击次数的提升,先从一部分实验样本进行测试,如果优化的好可大规模的投放。

实验数据可保存

代码的构建方面

sdk 整体分几个模块,大致是按照业务逻辑划分的,总体感觉还算比较清晰

source:

主要的功能都在这,和其他的模块有紧密关联,如初始化代码埋点和发送日志mixpanel,给用户添加属性的超类mixpanelPeople,网络类MPNetwork,资源管理MPResource以及MPSwizzler和MPWebSocket

codelesss:

主要是绑定事件模型类和绑定事件反馈响应,MPEventBinding把json解析成模型(主要是path和事件名字),bindingWithJSONObject方法event_type决定它用哪个子类做模型, 他包括2个子类MPUIControlBinding和MPUITableViewBinding分别处理uicontrol和uitableview下的可交互事件,其中有execute和stop方法用于绑定事件和解除绑定。

messages:

用于接受和转发前端的数据。MPABTestDesignerConnection 它相当于是websocket代理,用来实现websocket的开启连接,数据接受,发送数据,关闭连接。MPAbstractABTestDesignerMessage抽象类,他派生出来的类可分2种,request和response,request是didReceiveMessage根据web端传来json的type字段确定所属的派生类,并在类中做功能相应的处理,完成后创建发送response对象消息。

{"type":"change_response","payload":{"status":"OK"}}

Serialization:

序列化对象,把对象的信息转化成描述信息。MPObjectSerializerContext序列化上下文,即把已经序列化完成的对象放入enque队列,未序列化的放入deque队列,遍历deque队列将所有对象序列化。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,039评论 25 707
  • 在这篇文章里面,我们会对数据采集的一些基本概念进行阐述,然后,会针对目前市面上新增的一些前端埋点技术,如可视化埋点...
    言射手阅读 6,606评论 1 52
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,649评论 18 139
  • 1.感恩新人对我信任,没有彩排早上见面才沟通,他们的爱情故事真的很特别,9年相识相恋,终于修成正果,祝福。 2.感...
    Hello滑先生阅读 216评论 0 1
  • 听很多人说过:“感谢那些伤害我的人,因为你们让我变得更加美好。”是啊,从小到大,身边的人都会教育我们要有一颗感恩的...
    酒街阅读 637评论 0 0