react-native-quicktracking-analytics-module 2.0.2 → 2.1.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.
- package/LICENSE +1 -1
- package/QuicktrackingAnalyticsModule.podspec +29 -0
- package/README.md +210 -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,21 @@ 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
|
+

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

|
|
28
31
|
|
|
29
|
-
|
|
32
|
+
## Android 基座配置
|
|
30
33
|
在工程 build.gradle 配置脚本中 buildscript 和 allprojects 段中添加 sdk maven 仓库地址
|
|
31
34
|
```groovy
|
|
32
35
|
buildscript {
|
|
@@ -50,16 +53,6 @@ allprojects {
|
|
|
50
53
|
}
|
|
51
54
|
```
|
|
52
55
|
|
|
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
56
|
### 埋点验证配置
|
|
64
57
|
在Android.manifest中,找到MainActivity对应的activity标签,并将以下代码粘贴进去,appkey换成自己的
|
|
65
58
|
```xml
|
|
@@ -101,6 +94,9 @@ dependencies {
|
|
|
101
94
|
-keep class com.umeng.** {*;}
|
|
102
95
|
-keep class org.repackage.** {*;}
|
|
103
96
|
|
|
97
|
+
-keep class com.quick.qt.** {*;}
|
|
98
|
+
-keep class rpk.quick.qt.** {*;}
|
|
99
|
+
|
|
104
100
|
-keepclassmembers class * {
|
|
105
101
|
public <init> (org.json.JSONObject);
|
|
106
102
|
}
|
|
@@ -117,96 +113,21 @@ SDK需要引用导入工程的资源文件,通过了反射机制得到资源
|
|
|
117
113
|
}
|
|
118
114
|
```
|
|
119
115
|
|
|
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 基座集成
|
|
116
|
+
## iOS 基座配置
|
|
146
117
|
### 使用CocoaPods集成
|
|
147
118
|
进入iOS工程目录
|
|
148
119
|
```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
|
-
}
|
|
120
|
+
cd ios && pod install
|
|
183
121
|
```
|
|
184
|
-
### 按需引入日志组件
|
|
185
|
-
引入统计所需组件库(在更新SDK时,您可以直接使用 pod update 命令进行直接更新)
|
|
186
|
-
```objectivec
|
|
187
|
-
pod 'UMCCommonLog'
|
|
188
|
-
```
|
|
189
|
-
Podfile示例
|
|
190
|
-

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