tracking-lib-ott 1.0.0 → 1.0.1

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.
Files changed (2) hide show
  1. package/README.md +265 -0
  2. package/package.json +1 -1
package/README.md ADDED
@@ -0,0 +1,265 @@
1
+ # Tracking Library OTT
2
+
3
+ Thư viện tracking events dành cho các dự án OTT (Web, iOS, Android).
4
+
5
+ ## Cài đặt
6
+
7
+ ```bash
8
+ npm install tracking-lib-ott
9
+ # hoặc
10
+ yarn add tracking-lib-ott
11
+ ```
12
+
13
+ ## Sử dụng cơ bản
14
+
15
+ ### 1. Khởi tạo (Init)
16
+
17
+ ```javascript
18
+ import tracking from "tracking-lib-ott";
19
+
20
+ tracking.init({
21
+ baseURL: "https://api.example.com/v1/event_batch",
22
+ debug: true, // Bật log để debug
23
+
24
+ // Thông tin bắt buộc
25
+ session_id: "unique-session-id",
26
+ session_sign: "session-signature",
27
+ user_id: 12345,
28
+ deviceId: "device-unique-id",
29
+ deviceModel: "iPhone 14",
30
+ deviceBrand: "Apple",
31
+ ip_address: "192.168.1.1",
32
+
33
+ // Thông tin tuỳ chọn
34
+ appName: "on_plus",
35
+ appId: "app-id",
36
+ packageId: "com.vtvcab.onsportstv",
37
+ platform: "Web", // 'Web' | 'Ios' | 'Android'
38
+ os_version: "17.0",
39
+ app_version: "1.0.0",
40
+ language: "vi",
41
+ country: "VN",
42
+ });
43
+ ```
44
+
45
+ ### 2. Track Page View
46
+
47
+ ```javascript
48
+ // Track khi user vào một trang
49
+ tracking.trackPageView("/home");
50
+ tracking.trackPageView("/detail/123");
51
+ tracking.trackPageView("/live/channel-1");
52
+ ```
53
+
54
+ ### 3. Track Custom Event
55
+
56
+ ```javascript
57
+ // Track event tuỳ ý với params
58
+ tracking.trackEvent("button_click", {
59
+ button_id: "subscribe_btn",
60
+ page_id: "detail",
61
+ });
62
+
63
+ tracking.trackEvent("video_play", {
64
+ video_id: "12345",
65
+ video_title: "Trận đấu hay nhất",
66
+ duration: 3600,
67
+ });
68
+
69
+ tracking.trackEvent("search", {
70
+ keyword: "bóng đá",
71
+ results_count: 25,
72
+ });
73
+ ```
74
+
75
+ ### 4. Send Event trực tiếp
76
+
77
+ ```javascript
78
+ // Gửi event với full control payload
79
+ await tracking.sendEvent({
80
+ event_name: "custom_event",
81
+ custom_field_1: "value1",
82
+ custom_field_2: "value2",
83
+ });
84
+ ```
85
+
86
+ ---
87
+
88
+ ## Tích hợp Next.js (Pages Router)
89
+
90
+ ### Trong `_app.js` hoặc `_app.tsx`
91
+
92
+ ```javascript
93
+ import { useEffect } from "react";
94
+ import { useRouter } from "next/router";
95
+ import tracking from "tracking-lib-ott";
96
+
97
+ function MyApp({ Component, pageProps }) {
98
+ const router = useRouter();
99
+
100
+ useEffect(() => {
101
+ // Khởi tạo tracking
102
+ tracking.init({
103
+ baseURL: process.env.NEXT_PUBLIC_TRACKING_URL,
104
+ session_id: "session-id-from-somewhere",
105
+ session_sign: "session-sign",
106
+ user_id: 12345,
107
+ deviceId: "device-id",
108
+ deviceModel: navigator.userAgent,
109
+ deviceBrand: "Web Browser",
110
+ ip_address: "", // Lấy từ API hoặc để trống
111
+ debug: process.env.NODE_ENV === "development",
112
+ });
113
+
114
+ // Auto track page views
115
+ const cleanup = tracking.usePageViewTracking(router);
116
+
117
+ return cleanup;
118
+ }, [router]);
119
+
120
+ return <Component {...pageProps} />;
121
+ }
122
+
123
+ export default MyApp;
124
+ ```
125
+
126
+ ---
127
+
128
+ ## Custom Page Mapping
129
+
130
+ Mặc định thư viện có sẵn mapping cho các page phổ biến. Bạn có thể tuỳ chỉnh:
131
+
132
+ ```javascript
133
+ tracking.init({
134
+ baseURL: "...",
135
+ // ... other config
136
+
137
+ pageMap: {
138
+ // Thêm hoặc ghi đè page mapping
139
+ phim: { name: "Phim", id: "movie" },
140
+ "the-thao": { name: "Thể thao", id: "sports" },
141
+ "tin-tuc": { name: "Tin tức", id: "news" },
142
+ },
143
+ });
144
+ ```
145
+
146
+ **Page mapping mặc định:**
147
+
148
+ | URL Path | Page Name | Page ID |
149
+ | ----------- | --------- | -------- |
150
+ | `/` | Home | home |
151
+ | `/home` | Home | home |
152
+ | `/search` | Search | search |
153
+ | `/detail` | Detail | detail |
154
+ | `/player` | Player | player |
155
+ | `/video` | Video | video |
156
+ | `/live` | Live | live |
157
+ | `/category` | Category | category |
158
+ | `/profile` | Profile | profile |
159
+ | `/login` | Login | login |
160
+
161
+ ---
162
+
163
+ ## API Reference
164
+
165
+ ### `tracking.init(options)`
166
+
167
+ Khởi tạo thư viện với config.
168
+
169
+ | Option | Type | Required | Mô tả |
170
+ | -------------- | ------- | -------- | ---------------------------- |
171
+ | `baseURL` | string | ✅ | URL endpoint để gửi events |
172
+ | `session_id` | string | ✅ | Session ID của user |
173
+ | `session_sign` | string | ✅ | Session signature |
174
+ | `user_id` | number | ✅ | User ID (-1 nếu chưa login) |
175
+ | `deviceId` | string | ✅ | Device unique ID |
176
+ | `deviceModel` | string | ✅ | Tên model thiết bị |
177
+ | `deviceBrand` | string | ✅ | Hãng thiết bị |
178
+ | `ip_address` | string | ✅ | IP address |
179
+ | `debug` | boolean | ❌ | Bật/tắt debug logs |
180
+ | `appName` | string | ❌ | Tên app (default: `on_plus`) |
181
+ | `platform` | string | ❌ | Platform (default: `Web`) |
182
+ | `pageMap` | object | ❌ | Custom page mapping |
183
+
184
+ ### `tracking.trackPageView(url)`
185
+
186
+ Track sự kiện xem trang.
187
+
188
+ ```javascript
189
+ tracking.trackPageView("/detail/123?tab=info");
190
+ ```
191
+
192
+ ### `tracking.trackEvent(eventName, params)`
193
+
194
+ Track custom event.
195
+
196
+ ```javascript
197
+ tracking.trackEvent("video_complete", { video_id: "123" });
198
+ ```
199
+
200
+ ### `tracking.sendEvent(eventData)`
201
+
202
+ Gửi event trực tiếp với full payload.
203
+
204
+ ```javascript
205
+ await tracking.sendEvent({
206
+ event_name: "my_event",
207
+ ...customData,
208
+ });
209
+ ```
210
+
211
+ ### `tracking.usePageViewTracking(router)`
212
+
213
+ Auto track page views cho Next.js Pages Router.
214
+
215
+ ```javascript
216
+ const cleanup = tracking.usePageViewTracking(router);
217
+ // Gọi cleanup() khi unmount
218
+ ```
219
+
220
+ ---
221
+
222
+ ## Event Payload Structure
223
+
224
+ Mỗi event được gửi lên server có cấu trúc:
225
+
226
+ ```json
227
+ {
228
+ "app_name": "on_plus",
229
+ "app_id": "",
230
+ "package_id": "com.vtvcab.onsportstv",
231
+ "platform": "Web",
232
+
233
+ "session_id": "...",
234
+ "session_sign": "...",
235
+ "user_id": 12345,
236
+
237
+ "device_id": "...",
238
+ "device_model": "...",
239
+ "device_brand": "...",
240
+ "ip_address": "...",
241
+
242
+ "event_name": "page_view",
243
+ "page_name": "Home",
244
+ "page_id": "home",
245
+ "page_path": "/home",
246
+ "referrer_page_id": ""
247
+ }
248
+ ```
249
+
250
+ ---
251
+
252
+ ## Debug Mode
253
+
254
+ Khi bật `debug: true`, thư viện sẽ log ra console:
255
+
256
+ - Config khi khởi tạo
257
+ - Mỗi event được gửi đi
258
+ - Lỗi nếu có
259
+
260
+ ```javascript
261
+ tracking.init({
262
+ debug: process.env.NODE_ENV === "development",
263
+ // ...
264
+ });
265
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tracking-lib-ott",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",