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库<!--Del-->,具体实现可以参考[《HiAppEvent数据处理者lib库概述》](../../device-dev/subsystems/subsys-dfx-hiappevent-extend-so.md)<!--DelEnd-->。完整示例代码如下: 35 36 ```ts 37 import { BusinessError } from '@kit.BasicServicesKit'; 38 import { hiAppEvent, hilog } from '@kit.PerformanceAnalysisKit'; 39 40 @Entry 41 @Component 42 struct Index { 43 @State message: string = 'Hello World' 44 45 processorId: number = -1 46 47 build() { 48 Row() { 49 Column() { 50 Text(this.message) 51 .fontSize(50) 52 .fontWeight(FontWeight.Bold) 53 54 Button("addProcessorTest").onClick(()=>{ 55 // 在按钮点击函数中进行数据处理者添加 56 let eventConfig: hiAppEvent.AppEventReportConfig = { 57 domain: 'button', 58 name: 'click', 59 isRealTime: true 60 }; 61 let processor: hiAppEvent.Processor = { 62 name: 'analytics_demo', 63 debugMode: true, 64 routeInfo: 'CN', 65 onStartReport: true, 66 onBackgroundReport: true, 67 periodReport: 10, 68 batchReport: 5, 69 userIds: ['testUserIdName'], 70 userProperties: ['testUserPropertyName'], 71 eventConfigs: [eventConfig] 72 }; 73 this.processorId = hiAppEvent.addProcessor(processor); 74 }) 75 } 76 .width('100%') 77 } 78 .height('100%') 79 } 80 } 81 ``` 82 832. 编辑工程中的“entry > src > main > ets > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中添加并查看用户ID,完整示例代码如下: 84 85 ```ts 86 Button("userIdTest").onClick(()=>{ 87 // 在按钮点击函数中设置用户ID 88 hiAppEvent.setUserId('testUserIdName', '123456'); 89 90 // 在按钮点击函数中获取刚设置的用户ID 91 let userId = hiAppEvent.getUserId('testUserIdName'); 92 hilog.info(0x0000, 'testTag', `userId: ${userId}`) 93 }) 94 ``` 95 963. 编辑工程中的“entry > src > main > ets > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中添加并查看用户属性,完整示例代码如下: 97 98 ```ts 99 Button("userPropertyTest").onClick(()=>{ 100 // 在按钮点击函数中设置用户属性值 101 hiAppEvent.setUserProperty('testUserPropertyName', '123456'); 102 103 // 在按钮点击函数中获取刚设置的用户属性值 104 let userProperty = hiAppEvent.getUserProperty('testUserPropertyName'); 105 hilog.info(0x0000, 'testTag', `userProperty: ${userProperty}`) 106 }) 107 ``` 108 1094. 编辑工程中的“entry > src > main > ets > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中进行事件打点,以记录按钮点击事件,完整示例代码如下: 110 111 ```ts 112 Button("writeTest").onClick(()=>{ 113 // 在按钮点击函数中进行事件打点,以记录按钮点击事件 114 let eventParams: Record<string, number> = { 'click_time': 100 }; 115 let eventInfo: hiAppEvent.AppEventInfo = { 116 // 事件领域定义 117 domain: "button", 118 // 事件名称定义 119 name: "click", 120 // 事件类型定义 121 eventType: hiAppEvent.EventType.BEHAVIOR, 122 // 事件参数定义 123 params: eventParams, 124 }; 125 hiAppEvent.write(eventInfo).then(() => { 126 hilog.info(0x0000, 'testTag', `HiAppEvent success to write event`) 127 }).catch((err: BusinessError) => { 128 hilog.error(0x0000, 'testTag', `HiAppEvent err.code: ${err.code}, err.message: ${err.message}`) 129 }); 130 }) 131 ``` 132 1335. 编辑工程中的“entry > src > main > ets > pages > Index.ets” 文件,添加一个按钮并在其onClick函数中进行数据处理者移除(第二步已完成数据处理者添加),完整示例代码如下: 134 135 ```ts 136 Button("removeProcessorTest").onClick(()=>{ 137 // 在按钮点击函数中进行数据处理者移除 138 hiAppEvent.removeProcessor(this.processorId); 139 }) 140 ``` 141 1426. 点击IDE界面中的运行按钮,运行应用工程,然后在应用界面中依次点击按钮“addProcessorTest”、“userIdTest”、“userPropertyTest”、“writeTest”、“removeProcessorTest”,则成功通过数据处理者进行一次事件上报。 143 144 最终,事件处理者成功接收到事件数据,并在Log窗口看到按钮点击事件打点成功的日志: 145 146 ```text 147 HiAppEvent success to write event 148 ```