• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# HiAppEvent介绍
2
3<!--Kit: Performance Analysis Kit-->
4<!--Subsystem: HiviewDFX-->
5<!--Owner: @liujiaxing2024-->
6<!--Designer: @junjie_shi-->
7<!--Tester: @gcw_KuLfPSbe-->
8<!--Adviser: @foryourself-->
9
10## 简介
11
12HiAppEvent是系统为应用开发者提供的事件打点机制,支持记录应用运行过程中的故障、统计、安全和行为事件,帮助开发者定位问题、分析应用运行情况,统计访问量、用户活跃度、操作习惯以及其他影响用户使用产品的关键因素。
13
14## 基本概念
15
16**打点**:记录用户操作引起的变化,提供业务数据信息,供开发、产品、运维分析。
17
18- 事件领域:标识事件的领域,建议设置为业务领域名称,以便于区分不同的业务领域。
19
20- 事件名称:指定事件的名称,建议设置为具体的业务名称,以便于描述实际的业务意义。
21
22- 事件类型:指定事件的类型,支持以下四种类型事件:
23
24  - 行为事件:记录用户日常操作行为的事件,例如按钮点击、界面跳转等行为。
25  - 故障事件:定位和分析应用故障的事件,例如界面卡顿、网络中断等故障。
26  - 统计事件:统计和度量应用关键行为的事件,例如对使用时长、访问数等的统计。
27  - 安全事件:记录涉及应用安全行为的事件,例如用户授权等行为。
28
29- 事件参数:指定事件的参数,每个事件可以包含一组参数,建议设置为事件属性或事件发生的上下文信息,以便于描述事件的详细信息。
30
31**事件订阅**:通过HiAppEvent的接口[addWatcher](../reference/apis-performance-analysis-kit/js-apis-hiviewdfx-hiappevent.md#hiappeventaddwatcher),开发者可以注册监听自己关注的系统事件或应用事件。目的是当订阅的事件发生后,接收事件的回调信息并进行处理。
32
33## 实现原理
34
35### 系统事件订阅机制
36
37在当前系统应用沙箱机制下,应用进程仅可以直接访问自己的应用沙箱目录,参考[应用沙箱目录](../file-management/app-sandbox-directory.md)。而系统事件信息的存放路径不在应用沙箱目录中,因此无法直接获取。
38
39应用调用HiAppEvent的addWatcher接口订阅系统事件并创建共享目录。当应用进程发生故障时,DFX系统捕获相关信息,生成事件和日志,并分享到共享目录。HiAppEvent监听到事件后,将事件回调给应用。
40
41![hiappevent-watch-systemevents](figures/hiappevent-watch-systemevents.PNG)
42
43### 应用事件订阅机制
44
45应用调用addWatcher接口订阅关注的应用事件后,还需在应用事件发生时,调用[write](../reference/apis-performance-analysis-kit/js-apis-hiviewdfx-hiappevent.md#hiappeventwrite-1)接口进行打点,用来记录应用事件。
46
47HiAppEvent通过事件领域和事件名称关联应用事件,并通过addWatcher接口设置的回调方式将事件回调给应用。
48
49![hiappevent-watch-appevents](figures/hiappevent-watch-appevents.PNG)
50
51## 约束与限制
52
53- 订阅接口addWatcher是同步接口,涉及IO操作。对于性能有要求的模块,建议将接口的调用放到非主线程。
54
55- 订阅接口addWatcher传入的名称name是唯一的,相同的name,后一次调用会覆盖前一次的订阅。
56