• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 事件上报
2
3<!--Kit: Performance Analysis Kit-->
4<!--Subsystem: HiviewDFX-->
5<!--Owner: @liujiaxing2024-->
6<!--Designer: @junjie_shi-->
7<!--Tester: @gcw_KuLfPSbe-->
8<!--Adviser: @foryourself-->
9
10HiAppEvent提供接口用于处理上报事件。
11
12## 接口说明
13
14API接口的具体使用说明(参数使用限制、具体取值范围等)请参考[应用事件打点API文档](../reference/apis-performance-analysis-kit/js-apis-hiviewdfx-hiappevent.md)。
15
16**数据处理者接口功能介绍:**
17
18| 接口名                                    | 描述                                             |
19| ----------------------------------------- | ------------------------------------------------ |
20| addProcessor(processor: Processor): number | 添加数据处理者,以通过预置的处理者进行事件上报。 |
21| removeProcessor(id: number): void          | 移除数据处理者,以移除预置的处理者。             |
22
23**用户ID接口功能介绍:**
24
25| 接口名                                     | 描述                                         |
26| ------------------------------------------ | -------------------------------------------- |
27| setUserId(name: string, value: string): void | 设置用户ID,数据处理者上报事件时可携带用户ID。 |
28| getUserId(name: string): string               | 获取已设置的用户ID。                           |
29
30**用户属性接口功能介绍:**
31
32| 接口名                                           | 描述                                             |
33| ------------------------------------------------ | ------------------------------------------------ |
34| setUserProperty(name: string, value: string): void | 设置用户属性,数据处理者上报事件时可携带用户属性。 |
35| getUserProperty(name: string): string               | 获取已设置的用户属性。                            |
36
37## 开发步骤
38
39以用户点击按钮的行为为例,说明实现事件打点和上报的开发步骤。
40
411. 编辑工程中的“entry > src > main > ets  > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中添加数据处理者。analytics_demo为预置在设备里面的数据处理者lib库<!--Del-->,具体实现可以参考[《HiAppEvent数据处理者lib库概述》](../../device-dev/subsystems/subsys-dfx-hiappevent-extend-so.md)<!--DelEnd-->。完整示例代码如下:
42
43   ```ts
44   import { BusinessError } from '@kit.BasicServicesKit';
45   import { hiAppEvent, hilog } from '@kit.PerformanceAnalysisKit';
46
47   @Entry
48   @Component
49   struct Index {
50     @State message: string = 'Hello World';
51
52     processorId: number = -1;
53
54     build() {
55       Row() {
56         Column() {
57           Text(this.message)
58             .fontSize(50)
59             .fontWeight(FontWeight.Bold)
60
61           Button("addProcessorTest").onClick(()=>{
62             // 在按钮点击函数中进行数据处理者添加
63             let eventConfig: hiAppEvent.AppEventReportConfig = {
64               domain: 'button',
65               name: 'click',
66               isRealTime: true
67             };
68             let processor: hiAppEvent.Processor = {
69               name: 'analytics_demo',
70               debugMode: true,
71               routeInfo: 'CN',
72               onStartReport: true,
73               onBackgroundReport: true,
74               periodReport: 10,
75               batchReport: 5,
76               userIds: ['testUserIdName'],
77               userProperties: ['testUserPropertyName'],
78               eventConfigs: [eventConfig]
79             };
80             this.processorId = hiAppEvent.addProcessor(processor);
81           })
82         }
83         .width('100%')
84       }
85       .height('100%')
86     }
87   }
88   ```
89
902. 编辑工程中的“entry > src > main > ets  > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中添加并查看用户ID。完整示例代码如下:
91
92   ```ts
93     Button("userIdTest").onClick(()=>{
94       // 在按钮点击函数中设置用户ID
95       hiAppEvent.setUserId('testUserIdName', '123456');
96
97       // 在按钮点击函数中获取刚设置的用户ID
98       let userId = hiAppEvent.getUserId('testUserIdName');
99       hilog.info(0x0000, 'testTag', `userId: ${userId}`);
100     })
101   ```
102
1033. 编辑工程中的“entry > src > main > ets  > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中添加并查看用户属性。完整示例代码如下:
104
105   ```ts
106     Button("userPropertyTest").onClick(()=>{
107       // 在按钮点击函数中设置用户属性值
108       hiAppEvent.setUserProperty('testUserPropertyName', '123456');
109
110       // 在按钮点击函数中获取刚设置的用户属性值
111       let userProperty = hiAppEvent.getUserProperty('testUserPropertyName');
112       hilog.info(0x0000, 'testTag', `userProperty: ${userProperty}`);
113     })
114   ```
115
1164. 编辑工程中的“entry > src > main > ets  > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中进行事件打点,以记录按钮点击事件。完整示例代码如下:
117
118   ```ts
119     Button("writeTest").onClick(()=>{
120       // 在按钮点击函数中进行事件打点,以记录按钮点击事件
121       let eventParams: Record<string, number> = { 'click_time': 100 };
122       let eventInfo: hiAppEvent.AppEventInfo = {
123         // 事件领域定义
124         domain: "button",
125         // 事件名称定义
126         name: "click",
127         // 事件类型定义
128         eventType: hiAppEvent.EventType.BEHAVIOR,
129         // 事件参数定义
130         params: eventParams
131       };
132       hiAppEvent.write(eventInfo).then(() => {
133         hilog.info(0x0000, 'testTag', `HiAppEvent success to write event`);
134       }).catch((err: BusinessError) => {
135         hilog.error(0x0000, 'testTag', `HiAppEvent err.code: ${err.code}, err.message: ${err.message}`);
136       });
137     })
138   ```
139
1405. 编辑工程中的“entry > src > main > ets  > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中移除数据处理者(第二步已完成数据处理者添加)。完整示例代码如下:
141
142   ```ts
143     Button("removeProcessorTest").onClick(()=>{
144       // 在按钮点击函数中进行数据处理者移除
145       hiAppEvent.removeProcessor(this.processorId);
146     })
147   ```
148
1496. 点击DevEco Studio界面中的运行按钮,运行应用工程,然后在应用界面中依次点击按钮“addProcessorTest”、“userIdTest”、“userPropertyTest”、“writeTest”、“removeProcessorTest”,则成功通过数据处理者进行一次事件上报。
150
151   最终,事件处理者成功接收到事件数据,并在Log窗口看到按钮点击事件打点成功的日志:
152
153   ```text
154   HiAppEvent success to write event
155   ```
156