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.
Files changed (48) hide show
  1. package/LICENSE +1 -1
  2. package/QuicktrackingAnalyticsModule.podspec +29 -0
  3. package/README.md +211 -151
  4. package/android/build.gradle +40 -101
  5. package/android/gradle.properties +5 -5
  6. package/android/src/main/AndroidManifest.xml +1 -2
  7. package/android/src/main/AndroidManifestNew.xml +2 -0
  8. package/android/src/main/java/com/quicktrackinganalyticsmodule/QTSDKManager.kt +112 -0
  9. package/android/src/main/java/com/quicktrackinganalyticsmodule/QuicktrackingAnalyticsModuleModule.kt +259 -0
  10. package/android/src/main/java/com/quicktrackinganalyticsmodule/QuicktrackingAnalyticsModulePackage.kt +17 -0
  11. package/android/src/main/java/com/quicktrackinganalyticsmodule/property/QTViewProperties.kt +84 -0
  12. package/android/src/main/java/com/quicktrackinganalyticsmodule/utils/QTLog.kt +119 -0
  13. package/android/src/main/java/com/quicktrackinganalyticsmodule/utils/RNPropertyManager.kt +35 -0
  14. package/android/src/main/java/com/quicktrackinganalyticsmodule/utils/RNTouchTargetHelper.kt +162 -0
  15. package/android/src/main/java/com/quicktrackinganalyticsmodule/utils/RNUtils.kt +170 -0
  16. package/android/src/main/java/com/quicktrackinganalyticsmodule/utils/RNViewUtils.kt +233 -0
  17. package/ios/QuicktrackingAnalyticsModule.h +1 -4
  18. package/ios/{QuicktrackingAnalyticsModule.m → QuicktrackingAnalyticsModule.mm} +144 -110
  19. package/lib/commonjs/hook.js +564 -0
  20. package/lib/commonjs/hook.js.map +1 -0
  21. package/lib/commonjs/index.js +276 -166
  22. package/lib/commonjs/index.js.map +1 -0
  23. package/lib/commonjs/package.json +1 -0
  24. package/lib/module/hook.js +564 -0
  25. package/lib/module/hook.js.map +1 -0
  26. package/lib/module/index.js +253 -164
  27. package/lib/module/index.js.map +1 -0
  28. package/lib/typescript/index.d.ts +120 -79
  29. package/lib/typescript/index.d.ts.map +1 -0
  30. package/package.json +83 -67
  31. package/src/hook.js +3 -3
  32. package/src/index.tsx +266 -169
  33. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  34. package/android/gradle/wrapper/gradle-wrapper.properties +0 -5
  35. package/android/gradlew +0 -234
  36. package/android/gradlew.bat +0 -89
  37. package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/QTSDKManager.java +0 -93
  38. package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/QuicktrackingAnalyticsModule.java +0 -242
  39. package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/QuicktrackingAnalyticsModulePackage.java +0 -28
  40. package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/property/QTViewProperties.java +0 -48
  41. package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/utils/QTLog.java +0 -122
  42. package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/utils/RNPropertyManager.java +0 -29
  43. package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/utils/RNTouchTargetHelper.java +0 -139
  44. package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/utils/RNUtils.java +0 -188
  45. package/android/src/main/java/com/reactnativequicktrackinganalyticsmodule/utils/RNViewUtils.java +0 -148
  46. package/ios/QuicktrackingAnalyticsModule.xcodeproj/project.pbxproj +0 -282
  47. package/ios/QuicktrackingAnalyticsModule.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  48. 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) 2022 @钰昭
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 { QT } from "react-native-quicktracking-analytics-module";
18
+ import * as QT from "react-native-quicktracking-analytics-module";
19
19
  ```
20
- ## Android 基座集成
20
+
21
+ ## AppKey和收数域名获取
21
22
  ### 进入控制台
22
- 进入QT后台,点击“管理控制台”
23
- ![image.png](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/220937/1646903919683-276177f8-42a7-4f6e-87aa-fff88ae87a77.png#clientId=u468f5541-19bf-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=790&id=VqtE7&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1580&originWidth=2878&originalType=binary&ratio=1&rotation=0&showTitle=false&size=2103957&status=done&style=none&taskId=ua2f5b36f-3995-47d2-909b-a42abba8f55&title=&width=1439)
23
+ 进入QT后台,点击“管理控制台”<br>
24
+
25
+ ![alt text](image.png)
26
+
24
27
 
25
28
  ### 集成应用
26
- 找到需要集成埋点的应用:进入“应用列表”,选择所需组织,点击操作中的“详情或者去集成”
27
- ![image.png](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/64356327/1668567046473-aab9b13d-38fe-4e33-bd03-e5bedc69b0e4.png#clientId=uf7b76841-8b1b-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=602&id=ub77f00bf&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1204&originWidth=2562&originalType=binary&ratio=1&rotation=0&showTitle=false&size=646074&status=done&style=none&taskId=ube368388-293d-4ce2-a7ad-9aca1566a87&title=&width=1281)
29
+ 找到需要集成埋点的应用:进入“应用列表”,选择所需组织,点击操作中的“详情或者去集成”<br>
28
30
 
29
- ### Maven地址配置
31
+ ![alt text](image-1.png)
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
- ### 初始化SDK
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 && cd ..
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
- ![image.png](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/281773/1668518339815-d4ccb536-a399-4341-ba2c-902dcf24b1da.png#clientId=uf686b11a-7b20-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=564&id=u6a3e4c24&margin=%5Bobject%20Object%5D&name=image.png&originHeight=571&originWidth=751&originalType=binary&ratio=1&rotation=0&showTitle=false&size=80695&status=done&style=none&taskId=ub00bc826-f430-4519-9921-c4040b208a7&title=&width=741.5)
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
- ![image.png](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/281773/1668518096477-d9471acb-e7d0-4bba-8590-15891559b6b6.png#clientId=uf686b11a-7b20-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=412&id=ub7bbb0cc&margin=%5Bobject%20Object%5D&name=image.png&originHeight=823&originWidth=1366&originalType=binary&ratio=1&rotation=0&showTitle=false&size=127257&status=done&style=none&taskId=u9c88f1a5-85f6-4db1-a079-1dbef87724e&title=&width=683)
126
+ 填入的scheme:atm.yourappkey。<br>
127
+
128
+ ![image.png](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/281773/1668518096477-d9471acb-e7d0-4bba-8590-15891559b6b6.png#clientId=uf686b11a-7b20-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=412&id=ub7bbb0cc&margin=%5Bobject%20Object%5D&name=image.png&originHeight=823&originWidth=1366&originalType=binary&ratio=1&rotation=0&showTitle=false&size=127257&status=done&style=none&taskId=u9c88f1a5-85f6-4db1-a079-1dbef87724e&title=&width=683)<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.init('appkey', 'quicktracking');
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
- ```java
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.unregisterGlobalProperty('name'); // 删除全局属性name
335
+ import * as QT from "react-native-quicktracking-analytics-module";
336
+
337
+ QT.unregisterGlobalProperty('name'); // 删除全局属性name
324
338
  ```
325
339
 
326
340
  ### 获取特定的全局属性
327
- ```java
328
- async function getGlobalProperty(propertyName: string): Promise<any>
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
- await QT.getGlobalProperty('name'); // 获取全局属性name,返回 {name: "MyApp"}
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
- async function getGlobalProperties(propertyName: string): Promise<any>
358
+ const getGlobalProperties: () => Promise<any>;
342
359
  ```
343
360
 
344
- 示例:
361
+ #### 示例
345
362
  ```typescript
346
- await QT.getGlobalProperties(); // 获取所有全局属性
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
- ```java
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