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