track.dart
3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import 'package:auto_track/auto_track/config/queue.dart';
import 'package:auto_track/auto_track/utils/track_model.dart';
import '../click/click_info.dart';
import '../config/manager.dart';
import '../log/logger.dart';
import '../page_view/page_info.dart';
class Track {
static final Track instance = Track._();
Track._();
Map<String, dynamic> _appendPageInfo(Map<String, dynamic> params, PageInfo pageInfo) {
params['page_key'] = pageInfo.pageKey;
params['page_title'] = pageInfo.pageTitle;
params['page_manual_key'] = pageInfo.pageManualKey;
params['page_path'] = pageInfo.pagePath;
params['is_back'] = pageInfo.isBack ? 1 : 0;
return params;
}
void pageView(PageInfo pageInfo) {
if (!AutoTrackConfigManager.instance.autoTrackEnable) {
return;
}
if (!AutoTrackConfigManager.instance.pageViewEnabled) {
return;
}
Map<String, dynamic> params = _appendPageInfo({}, pageInfo);
_TrackPlugin.pageView(params);
AutoTrackLogger.getInstance().debug('track page_view => $params');
}
void pageLeave(PageInfo pageInfo) {
if (!AutoTrackConfigManager.instance.autoTrackEnable) {
return;
}
if (!AutoTrackConfigManager.instance.pageLeaveEnable) {
return;
}
Map<String, dynamic> params = _appendPageInfo({}, pageInfo);
params['page_duration'] = pageInfo.timer.duration.inMilliseconds;
_TrackPlugin.pageLeave(params);
AutoTrackLogger.getInstance().debug('track page_leave => $params');
}
void click(ClickInfo clickInfo) {
if (!AutoTrackConfigManager.instance.autoTrackEnable) {
return;
}
if (!AutoTrackConfigManager.instance.clickEnable) {
return;
}
Map<String, dynamic> params = {};
params['touch_x'] = clickInfo.touchX;
params['touch_y'] = clickInfo.touchY;
params['element_width'] = clickInfo.elementWidth;
params['element_height'] = clickInfo.elementHeight;
params['element_type'] = clickInfo.elementType;
params['element_manual_key'] = clickInfo.elementManualKey;
params['element_path'] = clickInfo.elementPath;
params['texts'] = clickInfo.texts;
_appendPageInfo(params, clickInfo.pageInfo);
_TrackPlugin.click(params);
AutoTrackLogger.getInstance().debug('track click => $params');
}
void customEvent(String type, Map<String, dynamic> params) {
_TrackPlugin.customEvent(type, params);
AutoTrackLogger.getInstance().debug('track custom_event => $params');
}
}
class _TrackPlugin {
static void pageView(Map<String, dynamic> params) {
AutoTrackQueue.instance.appendQueue(TrackModel('page_view', DateTime.now().millisecondsSinceEpoch, params, params['page_manual_key']));
}
static void pageLeave(Map<String, dynamic> params) {
AutoTrackQueue.instance.appendQueue(TrackModel('page_leave', DateTime.now().millisecondsSinceEpoch, params, params['page_manual_key']));
}
static void click(Map<String, dynamic> params) {
AutoTrackQueue.instance.appendQueue(TrackModel('click', DateTime.now().millisecondsSinceEpoch, params, params['element_manual_key']));
}
static void customEvent(String type, Map<String, dynamic> params) {
AutoTrackQueue.instance.appendQueue(TrackModel(type, DateTime.now().millisecondsSinceEpoch, params, params['key'] ?? type));
}
static void scroll(Map<String, dynamic> params) {
// AutoTrackQueue.instance.appendQueue(TrackModel('scroll', DateTime.now().millisecondsSinceEpoch, params));
}
}