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 ```