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