55[ ![ ] ( https://www.jitpack.io/v/DylanCaiCoding/Tracker.svg )] ( https://www.jitpack.io/#DylanCaiCoding/Tracker )
66[ ![ ] ( https://img.shields.io/badge/License-Apache--2.0-blue.svg )] ( https://github.com/DylanCaiCoding/Tracker/blob/master/LICENSE )
77
8- Tracker 是基于[ 西瓜视频责任链的埋点思路 ] ( https://mp.weixin.qq.com/s/iMn--4FNugtH26G90N1MaQ ) 实现的轻量级埋点框架。个人理解其核心思想后进行了改进和优化,最后使用了不到 200 行代码(不含注释)实现 ,学习成本更低,并且兼顾了 Kotlin 和 Java 用法。
8+ Tracker 是基于[ 西瓜视频的责任链埋点思路 ] ( https://mp.weixin.qq.com/s/iMn--4FNugtH26G90N1MaQ ) 实现的轻量级埋点框架。个人理解其核心思想后进行了改进和优化,最后仅用了 200 多行代码实现 ,学习成本更低,并且兼顾了 Kotlin 和 Java 用法。
99
1010## 埋点思路
1111
@@ -15,9 +15,7 @@ Tracker 是基于[西瓜视频责任链的埋点思路](https://mp.weixin.qq.com
1515
1616本库有模拟西瓜视频埋点需求的示例代码,大家可以克隆项目运行 ` sample-java ` 或 ` sample-kotlin ` ,点击各个位置的收藏按钮查看埋点日志。
1717
18- ## 开始使用
19-
20- ### Gradle
18+ ## Gradle
2119
2220在根目录的 build.gradle 添加:
2321
@@ -38,29 +36,13 @@ dependencies {
3836}
3937```
4038
41- ### 用法
42-
43- > [ Java 用法] ( https://dylancaicoding.github.io/Tracker/#/zh/usage ) 请查看文档。
44-
45- #### 初始化
39+ ## 用法
4640
47- 在 Application 初始化,传入一个 ` TrackHandler ` 实例。
41+ : pencil : ** [ >> 使用文档 << ] ( https://dylancaicoding.github.io/Tracker/#/zh/usage ) **
4842
49- ``` kotlin
50- initTracker(this , UMTrackHandler ())
51- ```
52-
53- ``` kotlin
54- class UMTrackHandler : TrackHandler {
55- override fun onEvent (context : Context , eventId : String , params : Map <String , String >) {
56- MobclickAgent .onEvent(context, eventId, params) // 以友盟统计为例
57- }
58- }
59- ```
60-
61- #### 建立页面内上下级责任链
43+ ## 示例
6244
63- 可以给 Activity、Fragment、View 设置埋点节点 ` trackNode ` 添加埋点参数 。
45+ 给 Activity、Fragment、View 设置埋点节点,通过视图树的层级关系(比如: ` Activity -> Fragment -> ViewHolder -> Button ` )就能建立节点的上下级责任链关系 。
6446
6547``` kotlin
6648trackNode = TrackNode (" channel_name" to " recommend" )
@@ -70,68 +52,27 @@ trackNode = TrackNode("channel_name" to "recommend")
7052holder.itemView.trackNode = TrackNode (" video_id" to item.id, " video_type" to item.type)
7153```
7254
73- 通过视图树的层级关系(比如:` Activity -> Fragment -> ViewHolder -> Button ` )就能建立节点的上下级责任链关系。
74-
75- #### 建立页面来源责任链
76-
77- 页面跳转时需要调用 ` intent.putReferrerTrackNode(activity/fragment/view) ` 设置来源节点。
55+ 通过设置来源节点和页面节点建立页面间的来源关系。
7856
7957``` kotlin
8058val intent = Intent (activity, DetailsActivity ::class .java).putReferrerTrackNode(view)
8159activity.startActivity(intent)
8260```
8361
84- 然后在跳转的 Activity 设置一个页面节点 ` PageTrackNode ` ,这样就建立了页面间的来源责任链。
85-
8662``` kotlin
87- trackNode = PageTrackNode (" page_name" to " details" )
63+ activity. trackNode = PageTrackNode (" page_name" to " details" )
8864```
8965
90- ` PageTrackNode ` 会添加前面所有节点的参数,添加的时候可以设置一些转换规则。比如上个页面的 ` page_name ` ,跳转后上报 ` from_page ` 。
91-
92- ``` kotlin
93- val referrerKeyMap = mapOf (" page_name" to " from_page" , " channel_name" to " from_channel_name" )
94- trackNode = PageTrackNode (referrerKeyMap, " page_name" to " details" )
95- ```
66+ 这样就建立了类似下图的责任链。
9667
97- #### 上报埋点参数
68+ ![ 图片 ] ( https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e4056fcff5a84c75988f4fa60e7e6ab5~tplv-k3u1fbpfcp-zoom-1.image )
9869
99- 调用 ` Activity/Fragment/View.postTrack(eventId) ` 会通过上下级责任链和来源责任链收集埋点参数,回调给 ` TrackHandler ` 进行上报 。
70+ 后续就能通过任意控件去上报责任链上的埋点参数 。
10071
10172``` kotlin
10273view.postTrack(" click_favorite" )
10374```
10475
105- #### 线索节点
106-
107- 线索节点适合用于具有会话特性的流程中,方便在流程中共享参数,常见的有登录、注册的流程、订单创建流程等。
108-
109- 在 Activity 可以设置线索节点,线索节点能在 View 或页面之间共享埋点参数。
110-
111- ``` kotlin
112- class RecordTrackNode : TrackNode {
113- var isRecord = false
114-
115- override fun fillTackParams (params : TrackParams ) {
116- params.put(" is_record" , it)
117- }
118- }
119-
120- activity.putThreadTrackNode(RecordTrackNode ())
121- ```
122-
123- 之后就能在 Activity、Fragment、View 更新线索节点中的参数。
124-
125- ``` kotlin
126- view.updateThreadTrackNode<RecordTrackNode > { isRecord = true }
127- ```
128-
129- 上报的时候需要对线索节点进行声明才会收集参数。
130-
131- ``` kotlin
132- view.postTrack(" click_publish" , RecordTrackNode ::class .java)
133- ```
134-
13576## 反馈
13677
13778有问题可以提 [ issues] ( https://github.com/DylanCaiCoding/Tracker/issues ) 或加个人微信 ` DylanCaiCoding ` 直接反馈。
0 commit comments