react-native-quicktracking-analytics-module 2.0.2 → 2.1.0
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/LICENSE +1 -1
- package/QuicktrackingAnalyticsModule.podspec +29 -0
- package/README.md +211 -151
- package/android/build.gradle +40 -101
- package/android/gradle.properties +5 -5
- package/android/src/main/AndroidManifest.xml +1 -2
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/quicktrackinganalyticsmodule/QTSDKManager.kt +112 -0
- package/android/src/main/java/com/quicktrackinganalyticsmodule/QuicktrackingAnalyticsModuleModule.kt +259 -0
- package/android/src/main/java/com/quicktrackinganalyticsmodule/QuicktrackingAnalyticsModulePackage.kt +17 -0
- package/android/src/main/java/com/quicktrackinganalyticsmodule/property/QTViewProperties.kt +84 -0
- package/android/src/main/java/com/quicktrackinganalyticsmodule/utils/QTLog.kt +119 -0
- package/android/src/main/java/com/quicktrackinganalyticsmodule/utils/RNPropertyManager.kt +35 -0
- package/android/src/main/java/com/quicktrackinganalyticsmodule/utils/RNTouchTargetHelper.kt +162 -0
- package/android/src/main/java/com/quicktrackinganalyticsmodule/utils/RNUtils.kt +170 -0
- package/android/src/main/java/com/quicktrackinganalyticsmodule/utils/RNViewUtils.kt +233 -0
- package/ios/QuicktrackingAnalyticsModule.h +1 -4
- package/ios/{QuicktrackingAnalyticsModule.m → QuicktrackingAnalyticsModule.mm} +144 -110
- package/lib/commonjs/hook.js +564 -0
- package/lib/commonjs/hook.js.map +1 -0
- package/lib/commonjs/index.js +276 -166
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/module/hook.js +564 -0
- package/lib/module/hook.js.map +1 -0
- package/lib/module/index.js +253 -164
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/index.d.ts +120 -79
- package/lib/typescript/index.d.ts.map +1 -0
- package/package.json +83 -67
- package/src/hook.js +3 -3
- package/src/index.tsx +266 -169
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +0 -5
- package/android/gradlew +0 -234
- package/android/gradlew.bat +0 -89
- package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/QTSDKManager.java +0 -93
- package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/QuicktrackingAnalyticsModule.java +0 -242
- package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/QuicktrackingAnalyticsModulePackage.java +0 -28
- package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/property/QTViewProperties.java +0 -48
- package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/utils/QTLog.java +0 -122
- package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/utils/RNPropertyManager.java +0 -29
- package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/utils/RNTouchTargetHelper.java +0 -139
- package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/utils/RNUtils.java +0 -188
- package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/utils/RNViewUtils.java +0 -148
- package/ios/QuicktrackingAnalyticsModule.xcodeproj/project.pbxproj +0 -282
- package/ios/QuicktrackingAnalyticsModule.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/react-native-quicktracking-analytics-module.podspec +0 -37
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2025 yuzhao
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
5
|
of this software and associated documentation files (the "Software"), to deal
|
|
6
6
|
in the Software without restriction, including without limitation the rights
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
|
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
|
4
|
+
|
|
5
|
+
Pod::Spec.new do |s|
|
|
6
|
+
s.name = "QuicktrackingAnalyticsModule"
|
|
7
|
+
s.version = package["version"]
|
|
8
|
+
s.summary = package["description"]
|
|
9
|
+
s.homepage = package["homepage"]
|
|
10
|
+
s.license = package["license"]
|
|
11
|
+
s.authors = package["author"]
|
|
12
|
+
|
|
13
|
+
s.platforms = { :ios => min_ios_version_supported }
|
|
14
|
+
s.source = { :git => "https://www.github.com/rn_qt_analytics.git.git", :tag => "#{s.version}" }
|
|
15
|
+
|
|
16
|
+
s.source_files = "ios/**/*.{h,m,mm}"
|
|
17
|
+
|
|
18
|
+
s.dependency "React-Core"
|
|
19
|
+
s.dependency "QTCommon", "~> 1.7.1.PX"
|
|
20
|
+
s.dependency "UMCommonLog"
|
|
21
|
+
|
|
22
|
+
# Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
|
|
23
|
+
# See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
|
|
24
|
+
if respond_to?(:install_modules_dependencies, true)
|
|
25
|
+
install_modules_dependencies(s)
|
|
26
|
+
else
|
|
27
|
+
s.dependency "React-Core"
|
|
28
|
+
end
|
|
29
|
+
end
|
package/README.md
CHANGED
|
@@ -15,18 +15,22 @@ pnpm add react-native-quicktracking-analytics-module
|
|
|
15
15
|
```
|
|
16
16
|
## 引入SDK环境变量
|
|
17
17
|
```tsx
|
|
18
|
-
import
|
|
18
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
19
19
|
```
|
|
20
|
-
|
|
20
|
+
|
|
21
|
+
## AppKey和收数域名获取
|
|
21
22
|
### 进入控制台
|
|
22
|
-
进入QT
|
|
23
|
-
|
|
23
|
+
进入QT后台,点击“管理控制台”<br>
|
|
24
|
+
|
|
25
|
+

|
|
26
|
+
|
|
24
27
|
|
|
25
28
|
### 集成应用
|
|
26
|
-
|
|
27
|
-

|
|
29
|
+
找到需要集成埋点的应用:进入“应用列表”,选择所需组织,点击操作中的“详情或者去集成”<br>
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+
## Android 基座配置
|
|
30
34
|
在工程 build.gradle 配置脚本中 buildscript 和 allprojects 段中添加 sdk maven 仓库地址
|
|
31
35
|
```groovy
|
|
32
36
|
buildscript {
|
|
@@ -50,16 +54,6 @@ allprojects {
|
|
|
50
54
|
}
|
|
51
55
|
```
|
|
52
56
|
|
|
53
|
-
### 组件引用
|
|
54
|
-
在工程app对应build.gradle配置脚本dependencies段中,添加集成所需要的依赖
|
|
55
|
-
```groovy
|
|
56
|
-
dependencies {
|
|
57
|
-
implementation fileTree(include:['*.jar'], dir:'libs')
|
|
58
|
-
|
|
59
|
-
implementation "com.umeng.umsdk:qt-px-common:1.4.0.PX"
|
|
60
|
-
}
|
|
61
|
-
```
|
|
62
|
-
|
|
63
57
|
### 埋点验证配置
|
|
64
58
|
在Android.manifest中,找到MainActivity对应的activity标签,并将以下代码粘贴进去,appkey换成自己的
|
|
65
59
|
```xml
|
|
@@ -101,6 +95,9 @@ dependencies {
|
|
|
101
95
|
-keep class com.umeng.** {*;}
|
|
102
96
|
-keep class org.repackage.** {*;}
|
|
103
97
|
|
|
98
|
+
-keep class com.quick.qt.** {*;}
|
|
99
|
+
-keep class rpk.quick.qt.** {*;}
|
|
100
|
+
|
|
104
101
|
-keepclassmembers class * {
|
|
105
102
|
public <init> (org.json.JSONObject);
|
|
106
103
|
}
|
|
@@ -117,96 +114,21 @@ SDK需要引用导入工程的资源文件,通过了反射机制得到资源
|
|
|
117
114
|
}
|
|
118
115
|
```
|
|
119
116
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
1. 域名设置
|
|
123
|
-
|
|
124
|
-
务必在初始化之前设置私有化环境收数域名。
|
|
125
|
-
```java
|
|
126
|
-
/**
|
|
127
|
-
* 设置上传统计日志的主域名和备用域名。SDK会优先将统计数据上报到主域名,失败的情况下会再尝试将数据上报到备用域名。
|
|
128
|
-
* 主域名primaryDomain或不能传入null或者空串,否则会抛出SdkDomainUndefined运行时异常。
|
|
129
|
-
*/
|
|
130
|
-
|
|
131
|
-
QtConfigure.setCustomDomain("收数域名", null);
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
2. 预初始化
|
|
135
|
-
|
|
136
|
-
请在宿主App的Application.onCreate函数中调用基础组件库初始化函数。
|
|
137
|
-
```java
|
|
138
|
-
// SDK预初始化函数不会采集设备信息,也不会向友盟后台上报数据。
|
|
139
|
-
// preInit预初始化函数耗时极少,不会影响App首次冷启动用户体验
|
|
140
|
-
|
|
141
|
-
QtConfigure.preInit(this,"appkey","Channel");
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
## iOS 基座集成
|
|
117
|
+
## iOS 基座配置
|
|
146
118
|
### 使用CocoaPods集成
|
|
147
119
|
进入iOS工程目录
|
|
148
120
|
```shell
|
|
149
|
-
cd ios && pod install
|
|
150
|
-
```
|
|
151
|
-
### SDK初始化并集成appKey
|
|
152
|
-
为保证您的App在集成统计SDK之后,能够满足工信部相关合规要求,您应确保App首次冷启动时,在用户阅读您的《隐私政策》并取得用户授权之后,才调用正式初始化函数初始化统计SDK,此时SDK才会真正采集设备信息并上报数据。反之,如果用户不同意《隐私政策》授权,则不能调用初始化函数
|
|
153
|
-
```objectivec
|
|
154
|
-
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
|
155
|
-
{
|
|
156
|
-
...
|
|
157
|
-
/** 初始化所有组件产品
|
|
158
|
-
@param appKey 开发者在QT申请的appkey.
|
|
159
|
-
@param channel 渠道标识,可设置nil表示"App Store".
|
|
160
|
-
*/
|
|
161
|
-
[QTConfigure initWithAppkey:@"应用的appKey" channel:@"安装渠道"];
|
|
162
|
-
...
|
|
163
|
-
return YES;
|
|
164
|
-
}
|
|
165
|
-
```
|
|
166
|
-
一旦App获取到《隐私政策》的用户授权,后续的App冷启动,开发者应该保证调用到初始化函数。
|
|
167
|
-
### 配置收数域名
|
|
168
|
-
```objectivec
|
|
169
|
-
#import <QTCommon/UMConfigure.h>
|
|
170
|
-
|
|
171
|
-
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
|
172
|
-
{
|
|
173
|
-
...
|
|
174
|
-
/** 设置上报统计日志的主域名和备用域名。此函数必须在SDK初始化函数调用之前调用。
|
|
175
|
-
@param primaryDomain 传日志的主域名收数地址,参数不能为null或者空串。例如:https://www.umeng.com
|
|
176
|
-
@param standbyDomain 上传日志备用域名收数地址,参数可以为null或者空串,若此参数为空,SDK内部会自动将主域名设置为备用域名。
|
|
177
|
-
*/
|
|
178
|
-
|
|
179
|
-
[QTConfigure setCustomDomain:@"主收数域名" standbyDomain:@"备用收数域名"];
|
|
180
|
-
...
|
|
181
|
-
return YES;
|
|
182
|
-
}
|
|
183
|
-
```
|
|
184
|
-
### 按需引入日志组件
|
|
185
|
-
引入统计所需组件库(在更新SDK时,您可以直接使用 pod update 命令进行直接更新)
|
|
186
|
-
```objectivec
|
|
187
|
-
pod 'UMCCommonLog'
|
|
121
|
+
cd ios && pod install
|
|
188
122
|
```
|
|
189
|
-
Podfile示例
|
|
190
|
-

|
|
191
|
-
开启日志打印
|
|
192
|
-
```objectivec
|
|
193
|
-
#import <QTCommon/UMConfigure.h>
|
|
194
|
-
#import <UMCommonLog/UMCommonLogHeaders.h>
|
|
195
123
|
|
|
196
|
-
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
|
197
|
-
{
|
|
198
|
-
...
|
|
199
|
-
[UMCommonLogManager setUpUMCommonLogManager];
|
|
200
|
-
[QTConfigure setLogEnabled:YES];
|
|
201
|
-
...
|
|
202
|
-
return YES;
|
|
203
|
-
}
|
|
204
|
-
```
|
|
205
124
|
### 埋点验证配置
|
|
206
125
|
添加您的 URL Scheme 到项目中,URL Scheme 位于项目设置 target -> 选项卡 Info - > URL Types。
|
|
207
|
-
填入的scheme:atm.yourappkey
|
|
208
|
-
|
|
126
|
+
填入的scheme:atm.yourappkey。<br>
|
|
127
|
+
|
|
128
|
+
<br>
|
|
129
|
+
|
|
209
130
|
在AppDelegate中调用函数[QTMobClick handleUrl:url]来接收 URL
|
|
131
|
+
|
|
210
132
|
```objectivec
|
|
211
133
|
- (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
|
|
212
134
|
{
|
|
@@ -218,8 +140,72 @@ Podfile示例
|
|
|
218
140
|
|
|
219
141
|
```
|
|
220
142
|
# 埋点API
|
|
221
|
-
## SDK初始化
|
|
222
|
-
|
|
143
|
+
## SDK初始化
|
|
144
|
+
注意初始化方法要放在App.tsx中,保证最先被执行到
|
|
145
|
+
|
|
146
|
+
### 示例
|
|
147
|
+
```typescript
|
|
148
|
+
import * as QT from 'react-native-quicktracking-analytics-module';
|
|
149
|
+
import { Platform } from 'react-native';
|
|
150
|
+
|
|
151
|
+
// 初始化相关代码写在此处
|
|
152
|
+
QT.setTrackDomain(
|
|
153
|
+
'收数域名',
|
|
154
|
+
'备用收数域名(可以传空)'
|
|
155
|
+
);
|
|
156
|
+
if (Platform.OS === 'android') {
|
|
157
|
+
QT.preInit('appkey', '应用商店名称');
|
|
158
|
+
QT.init('appkey', '应用商店名称');
|
|
159
|
+
} else {
|
|
160
|
+
QT.init('appkey', 'App Store');
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export default function App() {
|
|
164
|
+
return (
|
|
165
|
+
...
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## 设置收数域名
|
|
172
|
+
调用初始化SDK能力之前,需要调用 setTrackDomain 方法设置收数域名
|
|
173
|
+
```typescript
|
|
174
|
+
function setTrackDomain(mainTrackDomain: string, subTrackDomain: string): void;
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
| 参数 | 含义 |
|
|
178
|
+
| --- | --- |
|
|
179
|
+
| mainTrackDomain | 收数域名 |
|
|
180
|
+
| chsubTrackDomainannel | 备用收数域 |
|
|
181
|
+
|
|
182
|
+
### 示例
|
|
183
|
+
```typescript
|
|
184
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
185
|
+
|
|
186
|
+
QT.setTrackDomain(
|
|
187
|
+
'收数域名',
|
|
188
|
+
'备用收数域名(如果没有可以传空'')'
|
|
189
|
+
);
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## 预初始化
|
|
193
|
+
仅Android端需要预初始化方法
|
|
194
|
+
```typescript
|
|
195
|
+
function preInit(appKey: string, channel: string): void;
|
|
196
|
+
```
|
|
197
|
+
| 参数 | 含义 |
|
|
198
|
+
| --- | --- |
|
|
199
|
+
| appKey | QT后台提供的唯一应用key值 |
|
|
200
|
+
| channel | 下载渠道 |
|
|
201
|
+
|
|
202
|
+
```typescript
|
|
203
|
+
if (Platform.OS === 'android') {
|
|
204
|
+
QT.preInit('appkey', '应用商店名称');
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## 正式初始化
|
|
223
209
|
务必调用,请务必在用户同意隐私政策后,再初始化SDK。
|
|
224
210
|
```typescript
|
|
225
211
|
function init(appKey: string, channel: string): void
|
|
@@ -231,8 +217,28 @@ function init(appKey: string, channel: string): void
|
|
|
231
217
|
|
|
232
218
|
### 示例
|
|
233
219
|
```tsx
|
|
234
|
-
QT
|
|
220
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
221
|
+
|
|
222
|
+
QT.init('appkey', '应用商店名称');
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
## 日志开关(按需开启, 上线的时候记得关闭)
|
|
226
|
+
|
|
227
|
+
```typescript
|
|
228
|
+
function enableLog(enable: boolean): void;
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
| 参数 | 含义 |
|
|
232
|
+
| --- | --- |
|
|
233
|
+
| enable | true打开 false关闭 |
|
|
234
|
+
|
|
235
|
+
### 示例
|
|
236
|
+
```typescript
|
|
237
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
238
|
+
|
|
239
|
+
QT.enableLog(true);
|
|
235
240
|
```
|
|
241
|
+
|
|
236
242
|
## 用户账号上报
|
|
237
243
|
### 用户登录
|
|
238
244
|
该值的上传对应产品中“登录用户”:计算“登录用户”数,就是计算下述API上传值的去重数
|
|
@@ -252,13 +258,15 @@ function profileSignIn(ID: string, provider?: string): void
|
|
|
252
258
|
function profileSignOff(): void
|
|
253
259
|
```
|
|
254
260
|
|
|
255
|
-
|
|
261
|
+
#### 示例
|
|
256
262
|
```typescript
|
|
263
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
264
|
+
|
|
257
265
|
QT.profileSignIn('用户ID');
|
|
258
266
|
QT.profileSignOff();
|
|
259
267
|
```
|
|
260
268
|
|
|
261
|
-
|
|
269
|
+
### 用户属性上传
|
|
262
270
|
使用事件编码固定为"$$_user_profile"的自定义事件上传,该事件所携带的事件属性会被作为用户属性放在用户表中。
|
|
263
271
|
```typescript
|
|
264
272
|
function sendEvent(eventId: string, params: any): void
|
|
@@ -270,8 +278,10 @@ function sendEvent(eventId: string, params: any): void
|
|
|
270
278
|
|
|
271
279
|
注:用户属性上传一定要在用户账号上报后。
|
|
272
280
|
|
|
273
|
-
|
|
274
|
-
```
|
|
281
|
+
#### 示例
|
|
282
|
+
```typescript
|
|
283
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
284
|
+
|
|
275
285
|
QT.onProfileSignIn("张三");
|
|
276
286
|
|
|
277
287
|
const user = {
|
|
@@ -298,8 +308,10 @@ function registerGlobalProperty(globalProperty: any): void
|
|
|
298
308
|
3. 在Android中,对于全局属性值为null或undefined的场景,底层Android sdk会过滤这个全局属性字段,如需要空值分析场景,需自定义默认空值
|
|
299
309
|
4. 在iOS中,全局属性值不支持null和undefined,需要手动过滤。
|
|
300
310
|
|
|
301
|
-
|
|
311
|
+
#### 示例
|
|
302
312
|
```typescript
|
|
313
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
314
|
+
|
|
303
315
|
QT.registerGlobalProperty({
|
|
304
316
|
name: 'MyApp',
|
|
305
317
|
description: 'this is a app',
|
|
@@ -318,41 +330,50 @@ function unregisterGlobalProperty(propertyName: string): void
|
|
|
318
330
|
| --- | --- |
|
|
319
331
|
| propertyName | 要删除的全局属性名 |
|
|
320
332
|
|
|
321
|
-
|
|
333
|
+
#### 示例
|
|
322
334
|
```typescript
|
|
323
|
-
QT
|
|
335
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
336
|
+
|
|
337
|
+
QT.unregisterGlobalProperty('name'); // 删除全局属性name
|
|
324
338
|
```
|
|
325
339
|
|
|
326
340
|
### 获取特定的全局属性
|
|
327
|
-
```
|
|
328
|
-
|
|
341
|
+
```typescript
|
|
342
|
+
const getGlobalProperty(propertyName: string): Promise<any>
|
|
329
343
|
```
|
|
330
344
|
| 参数 | 含义 |
|
|
331
345
|
| --- | --- |
|
|
332
346
|
| propertyName | 要获取的全局属性名 |
|
|
333
347
|
|
|
334
|
-
|
|
348
|
+
#### 示例
|
|
335
349
|
```typescript
|
|
336
|
-
|
|
350
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
351
|
+
|
|
352
|
+
const nameValue = await QT.getGlobalProperty('name');
|
|
353
|
+
console.log('getGlobalProperty 调用成功', nameValue);
|
|
337
354
|
```
|
|
338
355
|
|
|
339
356
|
### 获取所有全局属性
|
|
340
357
|
```java
|
|
341
|
-
|
|
358
|
+
const getGlobalProperties: () => Promise<any>;
|
|
342
359
|
```
|
|
343
360
|
|
|
344
|
-
|
|
361
|
+
#### 示例
|
|
345
362
|
```typescript
|
|
346
|
-
|
|
347
|
-
```
|
|
363
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
348
364
|
|
|
365
|
+
const globalProperties = await QT.getGlobalProperties();
|
|
366
|
+
console.log('getGlobalProperties 调用成功', globalProperties);
|
|
367
|
+
```
|
|
349
368
|
|
|
350
369
|
### 清除所有全局属性
|
|
351
|
-
```
|
|
370
|
+
```typescript
|
|
352
371
|
function clearGlobalProperties(): void
|
|
353
372
|
```
|
|
354
|
-
|
|
373
|
+
#### 示例
|
|
355
374
|
```tsx
|
|
375
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
376
|
+
|
|
356
377
|
QT.clearGlobalProperties(); // 所有全局属性都被清除(慎用)
|
|
357
378
|
```
|
|
358
379
|
|
|
@@ -367,8 +388,10 @@ function onPageEnd(pageName: string): void
|
|
|
367
388
|
| --- | --- |
|
|
368
389
|
| pageName | 页面编码 |
|
|
369
390
|
|
|
370
|
-
|
|
391
|
+
### 示例
|
|
371
392
|
```typescript
|
|
393
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
394
|
+
|
|
372
395
|
QT.onPageStart('MainPage');
|
|
373
396
|
QT.onPageEnd('MainPage');
|
|
374
397
|
```
|
|
@@ -385,8 +408,10 @@ function uploadPageProperties(pageName: string, params: any): void
|
|
|
385
408
|
| pageName | 页面编码 |
|
|
386
409
|
| params | 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对 |
|
|
387
410
|
|
|
388
|
-
|
|
411
|
+
### 示例
|
|
389
412
|
```typescript
|
|
413
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
414
|
+
|
|
390
415
|
QT.uploadPageProperties('detail_page', { test: 1 })
|
|
391
416
|
```
|
|
392
417
|
注意:
|
|
@@ -397,13 +422,7 @@ QT.uploadPageProperties('detail_page', { test: 1 })
|
|
|
397
422
|
自定义事件可以用于追踪用户行为,记录行为发生的具体细节。
|
|
398
423
|
使用 **sendEvent **接口进行事件的统计,接口如下:
|
|
399
424
|
```typescript
|
|
400
|
-
|
|
401
|
-
* 自定义事件埋点
|
|
402
|
-
* @param eventId 当前统计的事件编码
|
|
403
|
-
* @param params 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>”对
|
|
404
|
-
* @param pageName 当前统计事件的页面编码
|
|
405
|
-
*/
|
|
406
|
-
function sendEvent(eventId: string, params?: any, pageName?: string): void
|
|
425
|
+
function sendEvent(eventId: string, params?: any, pageName?: string): void
|
|
407
426
|
```
|
|
408
427
|
| 参数 | 含义 |
|
|
409
428
|
| --- | --- |
|
|
@@ -411,8 +430,10 @@ QT.uploadPageProperties('detail_page', { test: 1 })
|
|
|
411
430
|
| params | 对当前事件的参数描述,定义为“参数名:参数值”的“<键-值>对”。为单层对象结构,不支持多层嵌套。 |
|
|
412
431
|
| pageName | 当前统计事件的页面编码。 |
|
|
413
432
|
|
|
414
|
-
|
|
433
|
+
### 示例
|
|
415
434
|
```typescript
|
|
435
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
436
|
+
|
|
416
437
|
// 携带事件参数的自定义事件
|
|
417
438
|
QT.sendEvent(
|
|
418
439
|
'event1',
|
|
@@ -433,10 +454,11 @@ QT.sendEvent(
|
|
|
433
454
|
);
|
|
434
455
|
```
|
|
435
456
|
> **_备注:_**
|
|
436
|
-
>
|
|
437
|
-
>
|
|
438
|
-
>
|
|
439
|
-
>
|
|
457
|
+
>
|
|
458
|
+
> 多参数类型事件能满足原来计算事件/计数事件的分析场景;
|
|
459
|
+
> 对于计算型事件不同的参数类型对应不同的计算方式,总共可以分为两大类,数值型和字符型
|
|
460
|
+
> - 数字型:支持累加值、最大值、最小值、平均值和去重数计算
|
|
461
|
+
> - 字符型:支持去重数计算
|
|
440
462
|
|
|
441
463
|
注意:
|
|
442
464
|
同全局属性,事件属性在Android和iOS不同平台上,也有着类型处理的差异:
|
|
@@ -448,19 +470,16 @@ QT.sendEvent(
|
|
|
448
470
|
## 桥接事件埋点
|
|
449
471
|
桥接事件用于h5桥接RN的场景,使用此接口将H5日志发送至App中。
|
|
450
472
|
```typescript
|
|
451
|
-
|
|
452
|
-
/**
|
|
453
|
-
* 桥接事件埋点
|
|
454
|
-
* @param data H5转发事件的日志体
|
|
455
|
-
*/
|
|
456
|
-
function sendEventForH5(data: string): void
|
|
473
|
+
function sendEventForH5(data: string): void
|
|
457
474
|
```
|
|
458
475
|
| 参数 | 含义 |
|
|
459
476
|
| --- | --- |
|
|
460
477
|
| data | H5转发事件的日志体 |
|
|
461
478
|
|
|
462
|
-
|
|
479
|
+
### 示例
|
|
463
480
|
```typescript
|
|
481
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
482
|
+
|
|
464
483
|
const content = data.nativeEvent.data;
|
|
465
484
|
QT.sendEventForH5(content);
|
|
466
485
|
```
|
|
@@ -529,6 +548,56 @@ export default function WebPage() {
|
|
|
529
548
|
);
|
|
530
549
|
}
|
|
531
550
|
```
|
|
551
|
+
|
|
552
|
+
# 其他
|
|
553
|
+
## 关闭SDK
|
|
554
|
+
```typescript
|
|
555
|
+
const disableSDK: () => void;
|
|
556
|
+
```
|
|
557
|
+
### 示例
|
|
558
|
+
|
|
559
|
+
```typescript
|
|
560
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
561
|
+
|
|
562
|
+
QT.disableSDK();
|
|
563
|
+
```
|
|
564
|
+
## 开启SDK
|
|
565
|
+
```typescript
|
|
566
|
+
const enableSDK: () => void;
|
|
567
|
+
```
|
|
568
|
+
### 示例
|
|
569
|
+
```typescript
|
|
570
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
571
|
+
|
|
572
|
+
QT.enableSDK();
|
|
573
|
+
```
|
|
574
|
+
## 自定义设备ID
|
|
575
|
+
```typescript
|
|
576
|
+
const setCustomDeviceId: (deviceId: string) => void;
|
|
577
|
+
```
|
|
578
|
+
| 参数 | 含义 |
|
|
579
|
+
| --- | --- |
|
|
580
|
+
| deviceId | 设备ID |
|
|
581
|
+
### 示例
|
|
582
|
+
|
|
583
|
+
```typescript
|
|
584
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
585
|
+
|
|
586
|
+
QT.setCustomDeviceId('deviceId');
|
|
587
|
+
```
|
|
588
|
+
## 读取设备ID
|
|
589
|
+
```typescript
|
|
590
|
+
const getDeviceId: () => Promise<any>;
|
|
591
|
+
```
|
|
592
|
+
### 示例
|
|
593
|
+
```typescript
|
|
594
|
+
import * as QT from "react-native-quicktracking-analytics-module";
|
|
595
|
+
|
|
596
|
+
const deviceID = await QT.getDeviceId();
|
|
597
|
+
console.log(‘getDeviceId 调用成功’,
|
|
598
|
+
JSON.stringify(deviceID));
|
|
599
|
+
```
|
|
600
|
+
|
|
532
601
|
# FAQ
|
|
533
602
|
## ruby版本过低
|
|
534
603
|
进入项目时提示,Required ruby-2.7.5 is not installed. To install do: 'rvm install "ruby-2.7.5"'
|
|
@@ -546,17 +615,8 @@ rvm use 2.7.5
|
|
|
546
615
|
# 参考
|
|
547
616
|
> [QuickTracking Android SDK集成手册](https://help.aliyun.com/document_detail/260238.html)
|
|
548
617
|
> [QuickTracking iOS SDK集成手册](https://help.aliyun.com/document_detail/260233.html)
|
|
549
|
-
> [React Native Android 本地模块](https://reactnative.dev/docs/native-modules-android)
|
|
550
|
-
> [React Native iOS 本地模块](https://reactnative.dev/docs/native-modules-ios)
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
618
|
+
> [React Native Android 本地模块](https://reactnative.dev/docs/0.78/legacy/native-modules-android)
|
|
619
|
+
> [React Native iOS 本地模块](https://reactnative.dev/docs/0.78/legacy/native-modules-ios)
|
|
560
620
|
|
|
561
621
|
## License
|
|
562
622
|
|