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.
Files changed (48) hide show
  1. package/LICENSE +1 -1
  2. package/QuicktrackingAnalyticsModule.podspec +29 -0
  3. package/README.md +210 -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,21 @@ 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
+ ![替代文字](https://img.alicdn.com/imgextra/i2/O1CN01HFFNLT27JvH1BKg0E_!!6000000007777-2-tps-2862-1500.png)
24
26
 
25
27
  ### 集成应用
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)
28
+ 找到需要集成埋点的应用:进入“应用列表”,选择所需组织,点击操作中的“详情或者去集成”<br>
29
+
30
+ ![替代文字](https://img.alicdn.com/imgextra/i2/O1CN01HFFNLT27JvH1BKg0E_!!6000000007777-2-tps-2862-1500.png)
28
31
 
29
- ### Maven地址配置
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
- ### 初始化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 基座集成
116
+ ## iOS 基座配置
146
117
  ### 使用CocoaPods集成
147
118
  进入iOS工程目录
148
119
  ```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
- }
120
+ cd ios && pod install
183
121
  ```
184
- ### 按需引入日志组件
185
- 引入统计所需组件库(在更新SDK时,您可以直接使用 pod update 命令进行直接更新)
186
- ```objectivec
187
- pod 'UMCCommonLog'
188
- ```
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
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
- ![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)
125
+ 填入的scheme:atm.yourappkey。<br>
126
+
127
+ ![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>
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.init('appkey', 'quicktracking');
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
- ```java
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.unregisterGlobalProperty('name'); // 删除全局属性name
334
+ import * as QT from "react-native-quicktracking-analytics-module";
335
+
336
+ QT.unregisterGlobalProperty('name'); // 删除全局属性name
324
337
  ```
325
338
 
326
339
  ### 获取特定的全局属性
327
- ```java
328
- async function getGlobalProperty(propertyName: string): Promise<any>
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
- await QT.getGlobalProperty('name'); // 获取全局属性name,返回 {name: "MyApp"}
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
- async function getGlobalProperties(propertyName: string): Promise<any>
357
+ const getGlobalProperties: () => Promise<any>;
342
358
  ```
343
359
 
344
- 示例:
360
+ #### 示例
345
361
  ```typescript
346
- await QT.getGlobalProperties(); // 获取所有全局属性
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
- ```java
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