react-native-quicktracking-analytics-module 1.0.1 → 1.0.3
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 +53 -46
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/QuicktrackingAnalyticsModuleModule.java +48 -8
- package/ios/QuicktrackingAnalyticsModule.m +39 -1
- package/lib/commonjs/index.js +24 -19
- package/lib/module/index.js +24 -19
- package/lib/typescript/index.d.ts +11 -14
- package/package.json +4 -2
- package/react-native-quicktracking-analytics-module.podspec +3 -3
- package/src/index.tsx +28 -19
package/README.md
CHANGED
|
@@ -56,7 +56,7 @@ allprojects {
|
|
|
56
56
|
dependencies {
|
|
57
57
|
implementation fileTree(include:['*.jar'], dir:'libs')
|
|
58
58
|
|
|
59
|
-
implementation "com.umeng.umsdk:qt-px-common:1.
|
|
59
|
+
implementation "com.umeng.umsdk:qt-px-common:1.4.0.PX"
|
|
60
60
|
}
|
|
61
61
|
```
|
|
62
62
|
|
|
@@ -141,13 +141,6 @@ QtConfigure.setCustomDomain("收数域名", null);
|
|
|
141
141
|
QtConfigure.preInit(this,"appkey","Channel");
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
-
3. 初始化
|
|
145
|
-
```java
|
|
146
|
-
// 请务必在用户同意隐私政策后,再初始化SDK。
|
|
147
|
-
// 正式初始化SDK,务必调用
|
|
148
|
-
QtConfigure.init(this,"appkey","unknown",UMConfigure.DEVICE_TYPE_PHONE, "");
|
|
149
|
-
```
|
|
150
|
-
|
|
151
144
|
|
|
152
145
|
## iOS 基座集成
|
|
153
146
|
### 使用CocoaPods集成
|
|
@@ -226,40 +219,20 @@ Podfile示例
|
|
|
226
219
|
```
|
|
227
220
|
# 埋点API
|
|
228
221
|
## SDK初始化
|
|
229
|
-
### 预初始化
|
|
230
|
-
SDK预初始化函数不会采集设备信息,也不会向QT后台上报数据。
|
|
231
|
-
|
|
232
|
-
preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验。
|
|
233
|
-
|
|
234
|
-
注意:该函数仅在Android环境调用,需要手动判断 Platform.OS === 'android'
|
|
235
|
-
```typescript
|
|
236
|
-
function preInit(appKey: string): void
|
|
237
|
-
```
|
|
238
|
-
| 参数 | 含义 |
|
|
239
|
-
| --- | --- |
|
|
240
|
-
| appKey | QT后台提供的唯一应用key值 |
|
|
241
|
-
|
|
242
222
|
### 正式初始化
|
|
243
223
|
务必调用,请务必在用户同意隐私政策后,再初始化SDK。
|
|
244
224
|
```typescript
|
|
245
|
-
function init(appKey: string): void
|
|
225
|
+
function init(appKey: string, channel: string): void
|
|
246
226
|
```
|
|
247
227
|
| 参数 | 含义 |
|
|
248
228
|
| --- | --- |
|
|
249
229
|
| appKey | QT后台提供的唯一应用key值 |
|
|
250
|
-
|
|
230
|
+
| channel | 下载渠道 |
|
|
251
231
|
|
|
252
232
|
### 示例
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
if (Platform.OS === 'android') {
|
|
256
|
-
QT.preInit('appkey', 'quicktracking');
|
|
257
|
-
}
|
|
258
|
-
QT.init('appkey', 'quicktracking');
|
|
259
|
-
};
|
|
233
|
+
```tsx
|
|
234
|
+
QT.init('appkey', 'quicktracking');
|
|
260
235
|
```
|
|
261
|
-
|
|
262
|
-
|
|
263
236
|
## 用户账号上报
|
|
264
237
|
### 用户登录
|
|
265
238
|
该值的上传对应产品中“登录用户”:计算“登录用户”数,就是计算下述API上传值的去重数
|
|
@@ -279,7 +252,7 @@ function profileSignIn(ID: string, provider?: string): void
|
|
|
279
252
|
function profileSignOff(): void
|
|
280
253
|
```
|
|
281
254
|
|
|
282
|
-
|
|
255
|
+
### 示例
|
|
283
256
|
```typescript
|
|
284
257
|
QT.profileSignIn('用户ID');
|
|
285
258
|
QT.profileSignOff();
|
|
@@ -292,7 +265,7 @@ function sendEvent(eventId: string, params: any): void
|
|
|
292
265
|
```
|
|
293
266
|
| 参数 | 含义 |
|
|
294
267
|
| --- | --- |
|
|
295
|
-
| eventId |
|
|
268
|
+
| eventId | 当前统计的事件编码 |
|
|
296
269
|
| params | 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对 |
|
|
297
270
|
|
|
298
271
|
注:用户属性上传一定要在用户账号上报后。
|
|
@@ -303,7 +276,7 @@ QT.onProfileSignIn("张三");
|
|
|
303
276
|
|
|
304
277
|
const user = {
|
|
305
278
|
gender: "male",
|
|
306
|
-
|
|
279
|
+
age: "8"
|
|
307
280
|
}
|
|
308
281
|
QT.sendEvent("$$_user_profile", user);
|
|
309
282
|
```
|
|
@@ -392,7 +365,7 @@ function onPageEnd(pageName: string): void
|
|
|
392
365
|
```
|
|
393
366
|
| 参数 | 含义 |
|
|
394
367
|
| --- | --- |
|
|
395
|
-
| pageName |
|
|
368
|
+
| pageName | 页面编码 |
|
|
396
369
|
|
|
397
370
|
示例:
|
|
398
371
|
```typescript
|
|
@@ -402,28 +375,62 @@ QT.onPageEnd('MainPage');
|
|
|
402
375
|
注意:
|
|
403
376
|
onPageStart 和 onPageEnd 必须成对调用。
|
|
404
377
|
|
|
378
|
+
## 页面属性上传
|
|
379
|
+
给当前页面附加自定义属性
|
|
380
|
+
```typescript
|
|
381
|
+
function uploadPageProperties(pageName: string, params: any): void
|
|
382
|
+
```
|
|
383
|
+
| 参数 | 含义 |
|
|
384
|
+
| --- | --- |
|
|
385
|
+
| pageName | 页面编码 |
|
|
386
|
+
| params | 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对 |
|
|
387
|
+
|
|
388
|
+
示例:
|
|
389
|
+
```typescript
|
|
390
|
+
QT.uploadPageProperties('detail_page', { test: 1 })
|
|
391
|
+
```
|
|
392
|
+
注意:
|
|
393
|
+
该接口必须在onPageStart和onPageEnd之间调用
|
|
394
|
+
|
|
395
|
+
|
|
405
396
|
## 自定义事件埋点
|
|
406
397
|
自定义事件可以用于追踪用户行为,记录行为发生的具体细节。
|
|
407
398
|
使用 **sendEvent **接口进行事件的统计,接口如下:
|
|
408
399
|
```typescript
|
|
409
400
|
/**
|
|
410
401
|
* 自定义事件埋点
|
|
411
|
-
* @param eventId
|
|
402
|
+
* @param eventId 当前统计的事件编码
|
|
412
403
|
* @param params 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对
|
|
404
|
+
* @param pageName 当前统计事件的页面编码
|
|
413
405
|
*/
|
|
414
|
-
function sendEvent(eventId: string, params
|
|
406
|
+
function sendEvent(eventId: string, params?: any, pageName?: string): void
|
|
415
407
|
```
|
|
416
408
|
| 参数 | 含义 |
|
|
417
409
|
| --- | --- |
|
|
418
|
-
| eventId |
|
|
410
|
+
| eventId | 为当前统计的事件编码。 |
|
|
419
411
|
| params | 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>对”。为单层对象结构,不支持多层嵌套。 |
|
|
412
|
+
| pageName | 当前统计事件的页面编码。 |
|
|
420
413
|
|
|
421
414
|
**示例:**
|
|
422
415
|
```typescript
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
416
|
+
// 携带事件参数的自定义事件
|
|
417
|
+
QT.sendEvent(
|
|
418
|
+
'event1',
|
|
419
|
+
{
|
|
420
|
+
name: 'quick tracking',
|
|
421
|
+
method: 'func',
|
|
422
|
+
},
|
|
423
|
+
);
|
|
424
|
+
|
|
425
|
+
// 携带事件参数和页面编码的自定义事件
|
|
426
|
+
QT.sendEvent(
|
|
427
|
+
'event2',
|
|
428
|
+
{
|
|
429
|
+
name: 'quick tracking',
|
|
430
|
+
method: 'func',
|
|
431
|
+
},
|
|
432
|
+
'main_page'
|
|
433
|
+
);
|
|
427
434
|
```
|
|
428
435
|
> **_备注:_**
|
|
429
436
|
> - 多参数类型事件能满足原来计算事件/计数事件的分析场景;
|
|
@@ -523,9 +530,6 @@ export default function WebPage() {
|
|
|
523
530
|
}
|
|
524
531
|
```
|
|
525
532
|
# FAQ
|
|
526
|
-
## Umeng4Plus为空
|
|
527
|
-
控制台提示[APLUS] -- jsbridge Android environment error, Umeng4Aplus = undefined
|
|
528
|
-
Umeng4Plus是桥接的环境变量,若提示undefined,说明在原生端未接入桥接功能,请找负责Android或iOS的同学对接。
|
|
529
533
|
## ruby版本过低
|
|
530
534
|
进入项目时提示,Required ruby-2.7.5 is not installed. To install do: 'rvm install "ruby-2.7.5"'
|
|
531
535
|
注意您的ruby版本,MacOS自带的Ruby为2.6.8,不符合RN项目需求。
|
|
@@ -551,6 +555,9 @@ rvm use 2.7.5
|
|
|
551
555
|
|
|
552
556
|
|
|
553
557
|
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
|
|
554
561
|
## License
|
|
555
562
|
|
|
556
563
|
MIT
|
package/android/build.gradle
CHANGED
|
@@ -134,7 +134,7 @@ dependencies {
|
|
|
134
134
|
// implementation fileTree(include:['*.jar'], dir:'libs')
|
|
135
135
|
implementation "com.facebook.react:react-native:+"
|
|
136
136
|
//友盟基础库
|
|
137
|
-
implementation "com.umeng.umsdk:qt-px-common:1.
|
|
137
|
+
implementation "com.umeng.umsdk:qt-px-common:1.4.0.PX"
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
if (isNewArchitectureEnabled()) {
|
|
@@ -55,13 +55,39 @@ public class QuicktrackingAnalyticsModuleModule extends ReactContextBaseJavaModu
|
|
|
55
55
|
QtTrackAgent.onPageEnd(pageName);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
+
@ReactMethod
|
|
59
|
+
public void uploadPageProperties(String pageName, ReadableMap property) {
|
|
60
|
+
Map<String, Object> map = new HashMap();
|
|
61
|
+
ReadableMapKeySetIterator iterator = property.keySetIterator();
|
|
62
|
+
while (iterator.hasNextKey()) {
|
|
63
|
+
String key = iterator.nextKey();
|
|
64
|
+
if (ReadableType.Array == property.getType(key)) {
|
|
65
|
+
map.put(key, property.getArray(key).toString());
|
|
66
|
+
} else if (ReadableType.Boolean == property.getType(key)) {
|
|
67
|
+
map.put(key, String.valueOf(property.getBoolean(key)));
|
|
68
|
+
} else if (ReadableType.Number == property.getType(key)) {
|
|
69
|
+
map.put(key, String.valueOf(property.getInt(key)));
|
|
70
|
+
} else if (ReadableType.String == property.getType(key)) {
|
|
71
|
+
map.put(key, property.getString(key));
|
|
72
|
+
} else if (ReadableType.Map == property.getType(key)) {
|
|
73
|
+
map.put(key, property.getMap(key).toString());
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
QtTrackAgent.setPageProperty(context, pageName, map);
|
|
77
|
+
}
|
|
78
|
+
|
|
58
79
|
@ReactMethod
|
|
59
80
|
public void onEvent(String eventID) {
|
|
60
81
|
QtTrackAgent.onEvent(context, eventID);
|
|
61
82
|
}
|
|
62
83
|
|
|
63
84
|
@ReactMethod
|
|
64
|
-
public void
|
|
85
|
+
public void onEventWithPageName(String eventID, String pageName) {
|
|
86
|
+
QtTrackAgent.onEvent(context, eventID, pageName);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@ReactMethod
|
|
90
|
+
public void onEventWithParams(String eventID, ReadableMap property) {
|
|
65
91
|
Map<String, Object> map = new HashMap();
|
|
66
92
|
ReadableMapKeySetIterator iterator = property.keySetIterator();
|
|
67
93
|
while (iterator.hasNextKey()) {
|
|
@@ -81,6 +107,27 @@ public class QuicktrackingAnalyticsModuleModule extends ReactContextBaseJavaModu
|
|
|
81
107
|
QtTrackAgent.onEventObject(context, eventID, map);
|
|
82
108
|
}
|
|
83
109
|
|
|
110
|
+
@ReactMethod
|
|
111
|
+
public void onEventWithParamsAndPageName(String eventID, ReadableMap property, String pageName) {
|
|
112
|
+
Map<String, Object> map = new HashMap();
|
|
113
|
+
ReadableMapKeySetIterator iterator = property.keySetIterator();
|
|
114
|
+
while (iterator.hasNextKey()) {
|
|
115
|
+
String key = iterator.nextKey();
|
|
116
|
+
if (ReadableType.Array == property.getType(key)) {
|
|
117
|
+
map.put(key, property.getArray(key).toString());
|
|
118
|
+
} else if (ReadableType.Boolean == property.getType(key)) {
|
|
119
|
+
map.put(key, String.valueOf(property.getBoolean(key)));
|
|
120
|
+
} else if (ReadableType.Number == property.getType(key)) {
|
|
121
|
+
map.put(key, String.valueOf(property.getInt(key)));
|
|
122
|
+
} else if (ReadableType.String == property.getType(key)) {
|
|
123
|
+
map.put(key, property.getString(key));
|
|
124
|
+
} else if (ReadableType.Map == property.getType(key)) {
|
|
125
|
+
map.put(key, property.getMap(key).toString());
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
QtTrackAgent.onEventObject(context, eventID, map, pageName);
|
|
129
|
+
}
|
|
130
|
+
|
|
84
131
|
@ReactMethod
|
|
85
132
|
public void onEventForH5(String content) {
|
|
86
133
|
try {
|
|
@@ -163,13 +210,6 @@ public class QuicktrackingAnalyticsModuleModule extends ReactContextBaseJavaModu
|
|
|
163
210
|
QtTrackAgent.onProfileSignOff();
|
|
164
211
|
}
|
|
165
212
|
|
|
166
|
-
// SDK预初始化函数不会采集设备信息,也不会向QT后台上报数据。
|
|
167
|
-
// preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验
|
|
168
|
-
@ReactMethod
|
|
169
|
-
public void preInit(String AppKey, String Channel) {
|
|
170
|
-
QtConfigure.preInit(context, AppKey, Channel);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
213
|
// 请务必在用户同意隐私政策后,再初始化SDK
|
|
174
214
|
// 正式初始化SDK,务必调用
|
|
175
215
|
@ReactMethod
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
//#if __has_include(<QTCommon/MobClick.h>)
|
|
2
2
|
#import <QTCommon/MobClick.h>
|
|
3
3
|
#import <QTCommon/UMConfigure.h>
|
|
4
|
+
#import <QTCommon/UMSpm.h>
|
|
4
5
|
|
|
5
6
|
//#else
|
|
6
7
|
//#import "MobClick.h"
|
|
@@ -34,13 +35,25 @@ RCT_EXPORT_METHOD(onPageEnd:(NSString *)pageName)
|
|
|
34
35
|
[QTMobClick endLogPageView:pageName];
|
|
35
36
|
}
|
|
36
37
|
|
|
38
|
+
// 上传页面属性
|
|
39
|
+
RCT_EXPORT_METHOD(upLoadPageProperties:(NSString *)pageName params:(NSDictionary*)parameters)
|
|
40
|
+
{
|
|
41
|
+
if (pageName == nil || [pageName isKindOfClass:[NSNull class]]) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (parameters == nil && [parameters isKindOfClass:[NSNull class]]) {
|
|
45
|
+
parameters = nil;
|
|
46
|
+
}
|
|
47
|
+
[UMSpm updatePageProperties:pageName properties: parameters];
|
|
48
|
+
}
|
|
49
|
+
|
|
37
50
|
//======================================自定义事件相关===========================================//
|
|
38
51
|
/**
|
|
39
52
|
* @description QtAnalytics.onEventObject(String eventId, Object params)
|
|
40
53
|
* @eventId 自定义事件名(字符串类型)
|
|
41
54
|
* @params 一级平铺自定义参数属性键值对,不支持嵌套,并且iOS端不支持值为 null 和 "" 类型的键
|
|
42
55
|
*/
|
|
43
|
-
RCT_EXPORT_METHOD(
|
|
56
|
+
RCT_EXPORT_METHOD(onEventWithParams:(NSString*)eventId parameters:(NSDictionary*)parameters)
|
|
44
57
|
{
|
|
45
58
|
if (eventId == nil || [eventId isKindOfClass:[NSNull class]]) {
|
|
46
59
|
return;
|
|
@@ -51,6 +64,31 @@ RCT_EXPORT_METHOD(onEventObject:(NSString*)eventId parameters:(NSDictionary*)par
|
|
|
51
64
|
[QTMobClick event:eventId attributes:parameters];
|
|
52
65
|
}
|
|
53
66
|
|
|
67
|
+
RCT_EXPORT_METHOD(onEvenWithPageName:(NSString*)eventId pageName:(NSString *)pageName)
|
|
68
|
+
{
|
|
69
|
+
if (eventId == nil || [eventId isKindOfClass:[NSNull class]]) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (pageName == nil || [pageName isKindOfClass:[NSNull class]]) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
[QTMobClick event:eventId pageName:pageName];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
RCT_EXPORT_METHOD(onEventWithParamsAndPageName:(NSString*)eventId pageName:(NSString *)pageName parameters:(NSDictionary*)parameters)
|
|
79
|
+
{
|
|
80
|
+
if (eventId == nil || [eventId isKindOfClass:[NSNull class]]) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (pageName == nil || [pageName isKindOfClass:[NSNull class]]) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (parameters == nil && [parameters isKindOfClass:[NSNull class]]) {
|
|
87
|
+
parameters = nil;
|
|
88
|
+
}
|
|
89
|
+
[QTMobClick event:eventId pageName:pageName attributes:parameters];
|
|
90
|
+
}
|
|
91
|
+
|
|
54
92
|
RCT_EXPORT_METHOD(onEvent:(NSString *)eventId)
|
|
55
93
|
{
|
|
56
94
|
if (eventId == nil || [eventId isKindOfClass:[NSNull class]]) {
|
package/lib/commonjs/index.js
CHANGED
|
@@ -12,7 +12,7 @@ const QuicktrackingAnalyticsModule = _reactNative.NativeModules.QuicktrackingAna
|
|
|
12
12
|
class QT {
|
|
13
13
|
/**
|
|
14
14
|
* 页面浏览事件埋点-打开页面
|
|
15
|
-
* @param pageName
|
|
15
|
+
* @param pageName 页面编码
|
|
16
16
|
*/
|
|
17
17
|
static onPageStart(pageName) {
|
|
18
18
|
QuicktrackingAnalyticsModule.onPageStart(pageName);
|
|
@@ -20,22 +20,40 @@ class QT {
|
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* 页面浏览事件埋点-离开页面
|
|
23
|
-
* @param pageName
|
|
23
|
+
* @param pageName 页面编码
|
|
24
24
|
*/
|
|
25
25
|
static onPageEnd(pageName) {
|
|
26
26
|
QuicktrackingAnalyticsModule.onPageEnd(pageName);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
/**
|
|
30
|
+
* 上传页面属性
|
|
31
|
+
* @param pageName 页面编码
|
|
32
|
+
* @param params 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对
|
|
33
|
+
*/
|
|
34
|
+
static uploadPageProperties(pageName, params) {
|
|
35
|
+
QuicktrackingAnalyticsModule.uploadPageProperties(pageName, params);
|
|
36
|
+
}
|
|
37
|
+
|
|
29
38
|
/**
|
|
30
39
|
* 自定义事件埋点
|
|
31
|
-
* @param eventId
|
|
40
|
+
* @param eventId 当前统计的事件编码
|
|
32
41
|
* @param params 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对
|
|
42
|
+
* @param pageName 当前统计事件的页面编码
|
|
33
43
|
*/
|
|
34
|
-
static sendEvent(eventId, params) {
|
|
44
|
+
static sendEvent(eventId, params, pageName) {
|
|
35
45
|
if (params) {
|
|
36
|
-
|
|
46
|
+
if (pageName) {
|
|
47
|
+
QuicktrackingAnalyticsModule.onEventWithParamsAndPageName(eventId, params, pageName);
|
|
48
|
+
} else {
|
|
49
|
+
QuicktrackingAnalyticsModule.onEventWithParams(eventId, params);
|
|
50
|
+
}
|
|
37
51
|
} else {
|
|
38
|
-
|
|
52
|
+
if (pageName) {
|
|
53
|
+
QuicktrackingAnalyticsModule.onEventWithPageName(eventId, pageName);
|
|
54
|
+
} else {
|
|
55
|
+
QuicktrackingAnalyticsModule.onEvent(eventId);
|
|
56
|
+
}
|
|
39
57
|
}
|
|
40
58
|
}
|
|
41
59
|
|
|
@@ -174,19 +192,6 @@ class QT {
|
|
|
174
192
|
QuicktrackingAnalyticsModule.profileSignOff();
|
|
175
193
|
}
|
|
176
194
|
|
|
177
|
-
/**
|
|
178
|
-
* SDK预初始化,仅Android调用
|
|
179
|
-
* @param appKey QuickTracking后台提供的唯一key值,请勿泄露给第三方
|
|
180
|
-
* @param channel 下载渠道
|
|
181
|
-
* @description
|
|
182
|
-
** SDK预初始化函数不会采集设备信息,也不会向QT后台上报数据。
|
|
183
|
-
** preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验。
|
|
184
|
-
** 需要在RN中判断 Platform.OS === 'android',再调用此接口
|
|
185
|
-
*/
|
|
186
|
-
static preInit(appKey, channel) {
|
|
187
|
-
QuicktrackingAnalyticsModule.preInit(appKey, channel);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
195
|
/**
|
|
191
196
|
* SDK正式初始化
|
|
192
197
|
* @param appKey QuickTracking后台提供的唯一key值,请勿泄露给第三方
|
package/lib/module/index.js
CHANGED
|
@@ -6,7 +6,7 @@ const QuicktrackingAnalyticsModule = NativeModules.QuicktrackingAnalyticsModule;
|
|
|
6
6
|
export class QT {
|
|
7
7
|
/**
|
|
8
8
|
* 页面浏览事件埋点-打开页面
|
|
9
|
-
* @param pageName
|
|
9
|
+
* @param pageName 页面编码
|
|
10
10
|
*/
|
|
11
11
|
static onPageStart(pageName) {
|
|
12
12
|
QuicktrackingAnalyticsModule.onPageStart(pageName);
|
|
@@ -14,22 +14,40 @@ export class QT {
|
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* 页面浏览事件埋点-离开页面
|
|
17
|
-
* @param pageName
|
|
17
|
+
* @param pageName 页面编码
|
|
18
18
|
*/
|
|
19
19
|
static onPageEnd(pageName) {
|
|
20
20
|
QuicktrackingAnalyticsModule.onPageEnd(pageName);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
/**
|
|
24
|
+
* 上传页面属性
|
|
25
|
+
* @param pageName 页面编码
|
|
26
|
+
* @param params 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对
|
|
27
|
+
*/
|
|
28
|
+
static uploadPageProperties(pageName, params) {
|
|
29
|
+
QuicktrackingAnalyticsModule.uploadPageProperties(pageName, params);
|
|
30
|
+
}
|
|
31
|
+
|
|
23
32
|
/**
|
|
24
33
|
* 自定义事件埋点
|
|
25
|
-
* @param eventId
|
|
34
|
+
* @param eventId 当前统计的事件编码
|
|
26
35
|
* @param params 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对
|
|
36
|
+
* @param pageName 当前统计事件的页面编码
|
|
27
37
|
*/
|
|
28
|
-
static sendEvent(eventId, params) {
|
|
38
|
+
static sendEvent(eventId, params, pageName) {
|
|
29
39
|
if (params) {
|
|
30
|
-
|
|
40
|
+
if (pageName) {
|
|
41
|
+
QuicktrackingAnalyticsModule.onEventWithParamsAndPageName(eventId, params, pageName);
|
|
42
|
+
} else {
|
|
43
|
+
QuicktrackingAnalyticsModule.onEventWithParams(eventId, params);
|
|
44
|
+
}
|
|
31
45
|
} else {
|
|
32
|
-
|
|
46
|
+
if (pageName) {
|
|
47
|
+
QuicktrackingAnalyticsModule.onEventWithPageName(eventId, pageName);
|
|
48
|
+
} else {
|
|
49
|
+
QuicktrackingAnalyticsModule.onEvent(eventId);
|
|
50
|
+
}
|
|
33
51
|
}
|
|
34
52
|
}
|
|
35
53
|
|
|
@@ -168,19 +186,6 @@ export class QT {
|
|
|
168
186
|
QuicktrackingAnalyticsModule.profileSignOff();
|
|
169
187
|
}
|
|
170
188
|
|
|
171
|
-
/**
|
|
172
|
-
* SDK预初始化,仅Android调用
|
|
173
|
-
* @param appKey QuickTracking后台提供的唯一key值,请勿泄露给第三方
|
|
174
|
-
* @param channel 下载渠道
|
|
175
|
-
* @description
|
|
176
|
-
** SDK预初始化函数不会采集设备信息,也不会向QT后台上报数据。
|
|
177
|
-
** preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验。
|
|
178
|
-
** 需要在RN中判断 Platform.OS === 'android',再调用此接口
|
|
179
|
-
*/
|
|
180
|
-
static preInit(appKey, channel) {
|
|
181
|
-
QuicktrackingAnalyticsModule.preInit(appKey, channel);
|
|
182
|
-
}
|
|
183
|
-
|
|
184
189
|
/**
|
|
185
190
|
* SDK正式初始化
|
|
186
191
|
* @param appKey QuickTracking后台提供的唯一key值,请勿泄露给第三方
|
|
@@ -6,20 +6,27 @@ declare type EventParams = Record<string, string | number>;
|
|
|
6
6
|
export declare class QT {
|
|
7
7
|
/**
|
|
8
8
|
* 页面浏览事件埋点-打开页面
|
|
9
|
-
* @param pageName
|
|
9
|
+
* @param pageName 页面编码
|
|
10
10
|
*/
|
|
11
11
|
static onPageStart(pageName: string): void;
|
|
12
12
|
/**
|
|
13
13
|
* 页面浏览事件埋点-离开页面
|
|
14
|
-
* @param pageName
|
|
14
|
+
* @param pageName 页面编码
|
|
15
15
|
*/
|
|
16
16
|
static onPageEnd(pageName: string): void;
|
|
17
|
+
/**
|
|
18
|
+
* 上传页面属性
|
|
19
|
+
* @param pageName 页面编码
|
|
20
|
+
* @param params 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对
|
|
21
|
+
*/
|
|
22
|
+
static uploadPageProperties(pageName: string, params: EventParams): void;
|
|
17
23
|
/**
|
|
18
24
|
* 自定义事件埋点
|
|
19
|
-
* @param eventId
|
|
25
|
+
* @param eventId 当前统计的事件编码
|
|
20
26
|
* @param params 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对
|
|
27
|
+
* @param pageName 当前统计事件的页面编码
|
|
21
28
|
*/
|
|
22
|
-
static sendEvent(eventId: string, params?: EventParams): void;
|
|
29
|
+
static sendEvent(eventId: string, params?: EventParams, pageName?: string): void;
|
|
23
30
|
/**
|
|
24
31
|
* 桥接事件埋点
|
|
25
32
|
* @param data H5转发事件的日志体
|
|
@@ -62,16 +69,6 @@ export declare class QT {
|
|
|
62
69
|
* 账号登出时需调用此接口,调用之后不再发送账号相关内容。
|
|
63
70
|
*/
|
|
64
71
|
static profileSignOff(): void;
|
|
65
|
-
/**
|
|
66
|
-
* SDK预初始化,仅Android调用
|
|
67
|
-
* @param appKey QuickTracking后台提供的唯一key值,请勿泄露给第三方
|
|
68
|
-
* @param channel 下载渠道
|
|
69
|
-
* @description
|
|
70
|
-
** SDK预初始化函数不会采集设备信息,也不会向QT后台上报数据。
|
|
71
|
-
** preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验。
|
|
72
|
-
** 需要在RN中判断 Platform.OS === 'android',再调用此接口
|
|
73
|
-
*/
|
|
74
|
-
static preInit(appKey: string, channel: string): void;
|
|
75
72
|
/**
|
|
76
73
|
* SDK正式初始化
|
|
77
74
|
* @param appKey QuickTracking后台提供的唯一key值,请勿泄露给第三方
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-quicktracking-analytics-module",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "QuickTracking ReactNative SDK",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
"typescript": "tsc --noEmit",
|
|
29
29
|
"lint": "eslint \"**/*.{js,ts,tsx}\"",
|
|
30
30
|
"prepare": "bob build",
|
|
31
|
-
"release": "release-it"
|
|
31
|
+
"release": "release-it",
|
|
32
|
+
"example": "yarn --cwd example",
|
|
33
|
+
"bootstrap": "yarn example && yarn && yarn example pods"
|
|
32
34
|
},
|
|
33
35
|
"keywords": [
|
|
34
36
|
"quicktracking",
|
|
@@ -17,8 +17,8 @@ Pod::Spec.new do |s|
|
|
|
17
17
|
s.source_files = "ios/**/*.{h,m,mm}"
|
|
18
18
|
|
|
19
19
|
s.dependency "React-Core"
|
|
20
|
-
s.dependency "QTCommon", "~> 1.3.
|
|
21
|
-
|
|
20
|
+
s.dependency "QTCommon", "~> 1.3.9.PX"
|
|
21
|
+
|
|
22
22
|
# Don't install the dependencies when we run `pod install` in the old architecture.
|
|
23
23
|
if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
|
|
24
24
|
s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
|
|
@@ -32,6 +32,6 @@ Pod::Spec.new do |s|
|
|
|
32
32
|
s.dependency "RCTRequired"
|
|
33
33
|
s.dependency "RCTTypeSafety"
|
|
34
34
|
s.dependency "ReactCommon/turbomodule/core"
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
end
|
|
37
37
|
end
|
package/src/index.tsx
CHANGED
|
@@ -10,7 +10,7 @@ type EventParams = Record<string, string | number>;
|
|
|
10
10
|
export class QT {
|
|
11
11
|
/**
|
|
12
12
|
* 页面浏览事件埋点-打开页面
|
|
13
|
-
* @param pageName
|
|
13
|
+
* @param pageName 页面编码
|
|
14
14
|
*/
|
|
15
15
|
static onPageStart(pageName: string) {
|
|
16
16
|
QuicktrackingAnalyticsModule.onPageStart(pageName);
|
|
@@ -18,22 +18,44 @@ export class QT {
|
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* 页面浏览事件埋点-离开页面
|
|
21
|
-
* @param pageName
|
|
21
|
+
* @param pageName 页面编码
|
|
22
22
|
*/
|
|
23
23
|
static onPageEnd(pageName: string) {
|
|
24
24
|
QuicktrackingAnalyticsModule.onPageEnd(pageName);
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
/**
|
|
28
|
+
* 上传页面属性
|
|
29
|
+
* @param pageName 页面编码
|
|
30
|
+
* @param params 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对
|
|
31
|
+
*/
|
|
32
|
+
static uploadPageProperties(pageName: string, params: EventParams) {
|
|
33
|
+
QuicktrackingAnalyticsModule.uploadPageProperties(pageName, params);
|
|
34
|
+
}
|
|
35
|
+
|
|
27
36
|
/**
|
|
28
37
|
* 自定义事件埋点
|
|
29
|
-
* @param eventId
|
|
38
|
+
* @param eventId 当前统计的事件编码
|
|
30
39
|
* @param params 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对
|
|
40
|
+
* @param pageName 当前统计事件的页面编码
|
|
31
41
|
*/
|
|
32
|
-
static sendEvent(eventId: string, params?: EventParams) {
|
|
42
|
+
static sendEvent(eventId: string, params?: EventParams, pageName?: string) {
|
|
33
43
|
if (params) {
|
|
34
|
-
|
|
44
|
+
if (pageName) {
|
|
45
|
+
QuicktrackingAnalyticsModule.onEventWithParamsAndPageName(
|
|
46
|
+
eventId,
|
|
47
|
+
params,
|
|
48
|
+
pageName
|
|
49
|
+
);
|
|
50
|
+
} else {
|
|
51
|
+
QuicktrackingAnalyticsModule.onEventWithParams(eventId, params);
|
|
52
|
+
}
|
|
35
53
|
} else {
|
|
36
|
-
|
|
54
|
+
if (pageName) {
|
|
55
|
+
QuicktrackingAnalyticsModule.onEventWithPageName(eventId, pageName);
|
|
56
|
+
} else {
|
|
57
|
+
QuicktrackingAnalyticsModule.onEvent(eventId);
|
|
58
|
+
}
|
|
37
59
|
}
|
|
38
60
|
}
|
|
39
61
|
|
|
@@ -176,19 +198,6 @@ export class QT {
|
|
|
176
198
|
QuicktrackingAnalyticsModule.profileSignOff();
|
|
177
199
|
}
|
|
178
200
|
|
|
179
|
-
/**
|
|
180
|
-
* SDK预初始化,仅Android调用
|
|
181
|
-
* @param appKey QuickTracking后台提供的唯一key值,请勿泄露给第三方
|
|
182
|
-
* @param channel 下载渠道
|
|
183
|
-
* @description
|
|
184
|
-
** SDK预初始化函数不会采集设备信息,也不会向QT后台上报数据。
|
|
185
|
-
** preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验。
|
|
186
|
-
** 需要在RN中判断 Platform.OS === 'android',再调用此接口
|
|
187
|
-
*/
|
|
188
|
-
static preInit(appKey: string, channel: string) {
|
|
189
|
-
QuicktrackingAnalyticsModule.preInit(appKey, channel);
|
|
190
|
-
}
|
|
191
|
-
|
|
192
201
|
/**
|
|
193
202
|
* SDK正式初始化
|
|
194
203
|
* @param appKey QuickTracking后台提供的唯一key值,请勿泄露给第三方
|