Skip to content

Commit 63e2be7

Browse files
Update README_ZH.md
1 parent d7540cd commit 63e2be7

File tree

1 file changed

+11
-70
lines changed

1 file changed

+11
-70
lines changed

README_ZH.md

Lines changed: 11 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
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
6648
trackNode = TrackNode("channel_name" to "recommend")
@@ -70,68 +52,27 @@ trackNode = TrackNode("channel_name" to "recommend")
7052
holder.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
8058
val intent = Intent(activity, DetailsActivity::class.java).putReferrerTrackNode(view)
8159
activity.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
10273
view.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

Comments
 (0)