@fle-sdk/event-tracking-web 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +148 -1
- package/lib/index.esm.js +414 -64
- package/lib/index.esm.min.js +1 -1
- package/lib/index.js +414 -64
- package/lib/index.min.js +1 -1
- package/lib/types/index.d.ts +52 -4
- package/lib/types/type.d.ts +23 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
> **构建用户数据体系,让用户行为数据发挥深远的价值。**
|
|
2
2
|
|
|
3
|
+
**当前版本**: v1.2.0
|
|
4
|
+
|
|
3
5
|
## 前言
|
|
4
6
|
|
|
5
7
|
**WEB 数据埋点 sdk,开始之前请确保了解埋点的架构和基础知识**
|
|
@@ -176,7 +178,10 @@ WebTracking
|
|
|
176
178
|
- track() ---自定义代码埋点上报
|
|
177
179
|
- getDeviceId() ---获取设备唯一标识
|
|
178
180
|
- resetDeviceId() ---重置设备唯一标识
|
|
181
|
+
- setPageKey() ---设置自定义页面唯一标识
|
|
182
|
+
- getPageKey() ---获取当前页面唯一标识
|
|
179
183
|
- clearBatchTimer() ---清理批量发送定时器
|
|
184
|
+
- clearBatchQueue() ---清空批量队列(包括 LocalStorage 中的数据)
|
|
180
185
|
|
|
181
186
|
### Init
|
|
182
187
|
|
|
@@ -199,6 +204,7 @@ WebTracking
|
|
|
199
204
|
| batchSend | boolean | 是否启用批量发送 | 否 | false |
|
|
200
205
|
| batchInterval | number | 批量发送间隔时间(ms) | 否 | 5000 |
|
|
201
206
|
| batchMaxSize | number | 批量发送最大数量 | 否 | 10 |
|
|
207
|
+
| pageKey | string | 自定义页面唯一标识,如果不传则自动从路由获取 | 否 | 自动生成 |
|
|
202
208
|
|
|
203
209
|
#### 例子
|
|
204
210
|
|
|
@@ -228,6 +234,8 @@ const App = () => {
|
|
|
228
234
|
batchSend: true,
|
|
229
235
|
batchInterval: 5000,
|
|
230
236
|
batchMaxSize: 10,
|
|
237
|
+
// 自定义页面标识(可选)
|
|
238
|
+
pageKey: "custom_page_key",
|
|
231
239
|
});
|
|
232
240
|
}, []);
|
|
233
241
|
|
|
@@ -258,6 +266,7 @@ export default App;
|
|
|
258
266
|
| batchSend | boolean | 是否启用批量发送 | 否 | false |
|
|
259
267
|
| batchInterval | number | 批量发送间隔时间(ms) | 否 | 5000 |
|
|
260
268
|
| batchMaxSize | number | 批量发送最大数量 | 否 | 10 |
|
|
269
|
+
| pageKey | string | 自定义页面唯一标识,如果不传则自动从路由获取 | 否 | 自动生成 |
|
|
261
270
|
|
|
262
271
|
#### 例子
|
|
263
272
|
|
|
@@ -286,6 +295,8 @@ const App = () => {
|
|
|
286
295
|
batchMaxSize: 10,
|
|
287
296
|
// 设置采样率为 90%
|
|
288
297
|
sampleRate: 0.9,
|
|
298
|
+
// 自定义页面标识(可选)
|
|
299
|
+
pageKey: "home_page",
|
|
289
300
|
});
|
|
290
301
|
}, []);
|
|
291
302
|
|
|
@@ -423,6 +434,110 @@ const Test = () => {
|
|
|
423
434
|
export default Test;
|
|
424
435
|
```
|
|
425
436
|
|
|
437
|
+
### ClearBatchQueue
|
|
438
|
+
|
|
439
|
+
#### 描述
|
|
440
|
+
|
|
441
|
+
> 清空批量队列。清除内存中的队列数据和 LocalStorage 中持久化的队列数据。适用于需要重置批量发送队列的场景。
|
|
442
|
+
|
|
443
|
+
#### 例子
|
|
444
|
+
|
|
445
|
+
```jsx
|
|
446
|
+
import React from "react";
|
|
447
|
+
import WebTracking from "@fle-sdk/event-tracking-web";
|
|
448
|
+
|
|
449
|
+
const Test = () => {
|
|
450
|
+
const handleClearQueue = () => {
|
|
451
|
+
// 清空批量队列(包括 LocalStorage 中的数据)
|
|
452
|
+
WebTracking.clearBatchQueue();
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
return (
|
|
456
|
+
<div className="Test">
|
|
457
|
+
<button onClick={handleClearQueue}>清空队列</button>
|
|
458
|
+
</div>
|
|
459
|
+
);
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
export default Test;
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### SetPageKey
|
|
466
|
+
|
|
467
|
+
#### 描述
|
|
468
|
+
|
|
469
|
+
> 设置自定义页面唯一标识。设置后,路由变化时不会自动更新 pageKey(除非设置 `autoUpdate: true`)。
|
|
470
|
+
|
|
471
|
+
#### 参数
|
|
472
|
+
|
|
473
|
+
| 参数名 | type | 描述 | 是否必填 | 默认值 |
|
|
474
|
+
| --------- | -------------- | ------------------------------------------------------------ | -------- | ------ |
|
|
475
|
+
| pageKey | string \| null | 页面唯一标识,如果传入 null 或空字符串,则恢复自动生成 | 是 | - |
|
|
476
|
+
| autoUpdate | boolean | 路由变化时是否自动更新(默认:false,使用自定义值后不再自动更新) | 否 | false |
|
|
477
|
+
|
|
478
|
+
#### 例子
|
|
479
|
+
|
|
480
|
+
```jsx
|
|
481
|
+
import React from "react";
|
|
482
|
+
import WebTracking from "@fle-sdk/event-tracking-web";
|
|
483
|
+
|
|
484
|
+
const Test = () => {
|
|
485
|
+
// 设置自定义页面标识
|
|
486
|
+
const handleSetPageKey = () => {
|
|
487
|
+
WebTracking.setPageKey("custom_page_001");
|
|
488
|
+
};
|
|
489
|
+
|
|
490
|
+
// 设置自定义页面标识,并允许路由变化时自动更新
|
|
491
|
+
const handleSetPageKeyWithAutoUpdate = () => {
|
|
492
|
+
WebTracking.setPageKey("custom_page_001", true);
|
|
493
|
+
};
|
|
494
|
+
|
|
495
|
+
// 恢复自动生成页面标识
|
|
496
|
+
const handleResetPageKey = () => {
|
|
497
|
+
WebTracking.setPageKey(null);
|
|
498
|
+
};
|
|
499
|
+
|
|
500
|
+
return (
|
|
501
|
+
<div className="Test">
|
|
502
|
+
<button onClick={handleSetPageKey}>设置自定义页面标识</button>
|
|
503
|
+
<button onClick={handleSetPageKeyWithAutoUpdate}>设置并允许自动更新</button>
|
|
504
|
+
<button onClick={handleResetPageKey}>恢复自动生成</button>
|
|
505
|
+
</div>
|
|
506
|
+
);
|
|
507
|
+
};
|
|
508
|
+
|
|
509
|
+
export default Test;
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
### GetPageKey
|
|
513
|
+
|
|
514
|
+
#### 描述
|
|
515
|
+
|
|
516
|
+
> 获取当前页面唯一标识。
|
|
517
|
+
|
|
518
|
+
#### 返回值
|
|
519
|
+
|
|
520
|
+
- `string` - 当前页面唯一标识
|
|
521
|
+
|
|
522
|
+
#### 例子
|
|
523
|
+
|
|
524
|
+
```jsx
|
|
525
|
+
import React, { useEffect } from "react";
|
|
526
|
+
import WebTracking from "@fle-sdk/event-tracking-web";
|
|
527
|
+
|
|
528
|
+
const Test = () => {
|
|
529
|
+
useEffect(() => {
|
|
530
|
+
// 获取当前页面标识
|
|
531
|
+
const pageKey = WebTracking.getPageKey();
|
|
532
|
+
console.log("当前页面标识:", pageKey);
|
|
533
|
+
}, []);
|
|
534
|
+
|
|
535
|
+
return <div className="Test"></div>;
|
|
536
|
+
};
|
|
537
|
+
|
|
538
|
+
export default Test;
|
|
539
|
+
```
|
|
540
|
+
|
|
426
541
|
### Track
|
|
427
542
|
|
|
428
543
|
> 手动代码埋点上报
|
|
@@ -568,6 +683,8 @@ const newDeviceId = WebTracking.resetDeviceId();
|
|
|
568
683
|
2. 当队列达到 `batchMaxSize` 时,立即批量发送
|
|
569
684
|
3. 或者每隔 `batchInterval` 毫秒自动发送一次
|
|
570
685
|
4. 批量发送失败时,数据会自动重新加入队列,避免数据丢失
|
|
686
|
+
5. **数据持久化**:队列数据会自动保存到 LocalStorage,页面刷新或关闭后数据不会丢失
|
|
687
|
+
6. **自动恢复**:重新打开页面时,会自动从 LocalStorage 恢复未发送的数据并继续发送
|
|
571
688
|
|
|
572
689
|
#### 使用示例
|
|
573
690
|
|
|
@@ -582,6 +699,14 @@ WebTracking.init({
|
|
|
582
699
|
});
|
|
583
700
|
```
|
|
584
701
|
|
|
702
|
+
#### 数据持久化说明
|
|
703
|
+
|
|
704
|
+
- **自动保存**:每次添加数据到队列时,会自动保存到 LocalStorage
|
|
705
|
+
- **自动恢复**:初始化时(如果启用了批量发送),会自动从 LocalStorage 恢复未发送的数据
|
|
706
|
+
- **页面卸载保护**:页面关闭或刷新时,会自动保存队列数据,确保数据不丢失
|
|
707
|
+
- **存储限制**:如果队列数据超过 4MB,会自动截断保留最新的 80% 数据
|
|
708
|
+
- **存储位置**:LocalStorage key 为 `web_tracking_batch_queue`
|
|
709
|
+
|
|
585
710
|
### 5.3 数据采样
|
|
586
711
|
|
|
587
712
|
当数据量过大时,可以使用数据采样功能来控制上报的数据量,节省服务器资源。
|
|
@@ -627,11 +752,33 @@ SDK 会自动过滤敏感字段,保护用户隐私。默认会过滤以下字
|
|
|
627
752
|
### v1.2.0 (最新)
|
|
628
753
|
|
|
629
754
|
- ✨ 新增设备 ID 管理功能(基于浏览器指纹技术)
|
|
755
|
+
- `getDeviceId()` - 获取设备唯一标识
|
|
756
|
+
- `resetDeviceId()` - 重置设备唯一标识
|
|
757
|
+
- ✨ 新增页面标识自定义功能
|
|
758
|
+
- `pageKey` - 支持在 init 和 preset 中自定义页面标识
|
|
759
|
+
- `setPageKey()` - 动态设置页面标识
|
|
760
|
+
- `getPageKey()` - 获取当前页面标识
|
|
761
|
+
- 支持恢复自动生成模式
|
|
630
762
|
- ✨ 新增批量发送功能,支持批量上报埋点数据
|
|
763
|
+
- `batchSend` - 启用批量发送
|
|
764
|
+
- `batchInterval` - 批量发送间隔时间
|
|
765
|
+
- `batchMaxSize` - 批量发送最大数量
|
|
766
|
+
- **LocalStorage 持久化**:队列数据自动保存,页面刷新不丢失
|
|
767
|
+
- **自动恢复**:重新打开页面时自动恢复未发送的数据
|
|
768
|
+
- `clearBatchQueue()` - 清空批量队列
|
|
631
769
|
- ✨ 新增数据采样功能,支持按比例采样上报
|
|
770
|
+
- `sampleRate` - 数据采样率(0-1之间)
|
|
632
771
|
- ✨ 新增敏感数据自动过滤功能
|
|
772
|
+
- 自动过滤 password、token、secret、key 等敏感字段
|
|
633
773
|
- 🔧 优化类型系统,提升类型安全性
|
|
634
|
-
-
|
|
774
|
+
- 完善 TypeScript 类型定义
|
|
775
|
+
- 新增工具类型和接口
|
|
776
|
+
- 🔧 优化错误处理机制
|
|
777
|
+
- 批量发送失败时自动重试
|
|
778
|
+
- 添加队列大小限制,防止内存溢出
|
|
779
|
+
- 🔧 优化页面卸载处理
|
|
780
|
+
- 使用 `visibilitychange` 和 `beforeunload` 事件保护数据
|
|
781
|
+
- 支持 `sendBeacon` API 优先发送
|
|
635
782
|
- 📝 完善文档和代码注释
|
|
636
783
|
|
|
637
784
|
### v1.1.0
|