Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
f02a8b03
D
Docs
项目概览
OpenHarmony
/
Docs
11 个月 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f02a8b03
编写于
12月 05, 2022
作者:
L
lyj_love_code
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update the hiappevent doc
Signed-off-by:
N
lyj_love_code
<
liangyujian2@huawei.com
>
上级
c2569dcb
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
90 addition
and
102 deletion
+90
-102
zh-cn/application-dev/dfx/Readme-CN.md
zh-cn/application-dev/dfx/Readme-CN.md
+0
-1
zh-cn/application-dev/dfx/hiappevent-guidelines.md
zh-cn/application-dev/dfx/hiappevent-guidelines.md
+90
-91
zh-cn/application-dev/dfx/hiappevent-overview.md
zh-cn/application-dev/dfx/hiappevent-overview.md
+0
-10
未找到文件。
zh-cn/application-dev/dfx/Readme-CN.md
浏览文件 @
f02a8b03
# DFX
-
应用事件打点
-
[
应用事件打点概述
](
hiappevent-overview.md
)
-
[
应用事件打点开发指导
](
hiappevent-guidelines.md
)
-
性能打点跟踪
-
[
性能打点跟踪概述
](
hitracemeter-overview.md
)
...
...
zh-cn/application-dev/dfx/hiappevent-guidelines.md
浏览文件 @
f02a8b03
# 应用事件打点开发指导
##
场景介绍
##
简介
应用事件打点的主要工作是在应用运行过程中,帮助应用记录在运行过程中发生的各种
信息。
传统的日志系统里汇聚了整个设备上所有程序运行的过程流水日志,难以识别其中的关键信息。因此,应用开发者需要一种数据打点机制,用来评估如访问数、日活、用户操作习惯以及影响用户使用的关键因素等关键
信息。
## 接口说明
HiAppEvent是在系统层面为应用开发者提供的一种事件打点机制,用于帮助应用记录在运行过程中发生的故障信息、统计信息、安全信息、用户行为信息,以支撑开发者分析应用的运行情况。
## 基本概念
-
**打点**
记录由用户操作引起的变化,提供业务数据信息,以供开发、产品、运维分析。
## 事件设计规范
应用事件JS打点接口由hiAppEvent模块提供。
-
事件领域:用于标识事件的领域,建议设置为业务模块名称,以便于区分不同的业务模块。
-
事件名称:用于指定事件的名称,建议设置为具体的业务名称,以便于描述实际的业务意义。
-
事件类型:用于指定事件的类型,支持以下四种类型事件:
-
行为事件:用于记录用户日常操作行为的事件,例如按钮点击、界面跳转等行为。
-
故障事件:用于定位和分析应用故障的事件,例如界面卡顿、掉网掉话等异常。
-
统计事件:用于统计和度量应用关键行为的事件,例如对使用时长、访问数等的统计。
-
安全事件:用于记录涉及应用安全行为的事件,例如密码修改、用户授权等行为。
-
事件参数:用于指定事件的参数,每个事件可以包含一组参数,建议设置为事件属性或事件发生上下文信息,以便于描述事件的详细信息。
以下仅提供简单的接口介绍,API接口的具体使用说明(参数使用限制、具体取值范围等)请参考
[
应用事件打点API文档
](
../reference/apis/js-apis-hiviewdfx-hiappevent.md
)
。
## 接口说明
应用事件打点接口由hiAppEvent模块提供,API接口的具体使用说明(参数使用限制、具体取值范围等)请参考
[
应用事件打点API文档
](
../reference/apis/js-apis-hiviewdfx-hiappevent.md
)
。
**打点接口功能介绍:**
...
...
@@ -17,33 +34,61 @@
| write(AppEventInfo info, AsyncCallback
\<
void> callback): void | 应用事件异步打点方法,使用callback方式作为异步回调。 |
| write(AppEventInfo info): Promise
\<
void> | 应用事件异步打点方法,使用Promise方式作为异步回调。 |
**打点配置接口功能介绍:**
| 接口名 | 描述 |
| ------------------------------------ | ---------------------------------------------------- |
| configure(ConfigOption config): void | 应用事件打点配置方法,可以对打点功能进行自定义配置。 |
**订阅接口功能介绍:**
| 接口名 | 描述 |
| -------------------------------------------------- | -------------------- |
| addWatcher(Watcher watcher): AppEventPackageHolder | 添加应用事件
订阅者
。 |
| removeWatcher(Watcher watcher): void | 移除应用事件
订阅者
。 |
| 接口名 | 描述
|
| -------------------------------------------------- | --------------------
------------------------
|
| addWatcher(Watcher watcher): AppEventPackageHolder | 添加应用事件
观察者,以添加对应用事件的订阅
。 |
| removeWatcher(Watcher watcher): void | 移除应用事件
观察者,以移除对应用事件的订阅
。 |
**清理接口功能介绍:**
## 开发步骤
| 接口名 | 描述 |
| ----------------- | -------------------- |
| clearData(): void | 清除本地的打点数据。 |
以实现对用户点击按钮行为的事件打点及订阅为例,说明开发步骤。
## 开发步骤
1.
新建一个ets应用工程,编辑工程中的“entry > src > main > ets > Application> MyAbilityStage.ts” 文件,在应用启动时添加对用户点击按钮事件的订阅,完整示例代码如下:
以一次应用事件打点订阅流程为例,说明开发步骤。
```
js
import
AbilityStage
from
"
@ohos.application.AbilityStage
"
import
hiAppEvent
from
'
@ohos.hiviewdfx.hiAppEvent
'
export
default
class
MyAbilityStage
extends
AbilityStage
{
onCreate
()
{
console
.
log
(
"
[Demo] MyAbilityStage onCreate
"
)
hiAppEvent
.
addWatcher
({
// 开发者可以自定义观察者名称,系统会使用名称来标识不同的观察者
name
:
"
watcher1
"
,
// 开发者可以订阅感兴趣的应用事件,此处是订阅了按钮事件
appEventFilters
:
[{
domain
:
"
button
"
}],
// 开发者可以设置订阅回调触发的条件,此处是设置为事件打点数量满足1个
triggerCondition
:
{
row
:
1
},
// 开发者可以自行实现订阅回调函数,以便对订阅获取到的事件打点数据进行自定义处理
onTrigger
:
function
(
curRow
,
curSize
,
holder
)
{
// 返回的holder对象为null,表示订阅过程发生异常,因此在记录错误日志后直接返回
if
(
holder
==
null
)
{
console
.
error
(
"
HiAppEvent holder is null
"
)
return
}
let
eventPkg
=
null
// 根据设置阈值大小(默认为512KB)去获取订阅事件包,直到将订阅数据全部取出
// 返回的事件包对象为null,表示当前订阅数据已被全部取出,此次订阅回调触发结束
while
((
eventPkg
=
holder
.
takeNext
())
!=
null
)
{
// 开发者可以对事件包中的事件打点数据进行自定义处理,此处是将事件打点数据打印在日志中
console
.
info
(
`HiAppEvent eventPkg.packageId=
${
eventPkg
.
packageId
}
`
)
console
.
info
(
`HiAppEvent eventPkg.row=
${
eventPkg
.
row
}
`
)
console
.
info
(
`HiAppEvent eventPkg.size=
${
eventPkg
.
size
}
`
)
for
(
const
eventInfo
of
eventPkg
.
data
)
{
console
.
info
(
`HiAppEvent eventPkg.info=
${
eventInfo
}
`
)
}
}
}
})
}
}
1.
新建一个ets应用工程,编辑工程中的“entry > src > main > ets > pages > index.ets” 文件,依次添加三个按钮,以对应用事件打点订阅流程进行模拟。其中,按钮1模拟了应用事件打点的调用,按钮2模拟了添加自动触发回调的事件订阅者的调用,按钮3模拟了移除事件订阅者的调用
,完整示例代码如下:
2
.
编辑工程中的
“
entry
>
src
>
main
>
ets
>
Application
>
MyAbilityStage
.
ts
”
文件
,
添加一个按钮并在其onClick函数中进行事件打点
,
以记录按钮点击事件
,
完整示例代码如下
:
```
t
s
import
hiAppEvent
from
'
@ohos.hiviewdfx.hiAppEvent
'
;
```
j
s
import hiAppEvent from '@ohos.hiviewdfx.hiAppEvent'
@Entry
@Component
...
...
@@ -57,61 +102,21 @@
.fontSize(50)
.fontWeight(FontWeight.Bold)
Button
(
"
1
writeTest
"
).
onClick
(()
=>
{
//
根据传入的事件参数执行一次应用事件打点
Button("writeTest").onClick(()=>{
//
在按钮点击函数中进行事件打点,以记录按钮点击事件
hiAppEvent.write({
domain
:
"
test_domain
"
,
name
:
"
test_event
"
,
eventType
:
hiAppEvent
.
EventType
.
FAULT
,
params
:
{
int_data
:
100
,
str_data
:
"
strValue
"
}
// 事件领域定义
domain: "button",
// 事件名称定义
name: "click",
// 事件类型定义
eventType: hiAppEvent.EventType.BEHAVIOR,
// 事件参数定义
params: { click_time: 100 }
}).then(() => {
console
.
log
(
`HiAppEvent success to write event`
)
;
console.log(
`HiAppEvent success to write event`
)
}).catch((err) => {
console
.
error
(
`code:
${
err
.
code
}
, message:
${
err
.
message
}
`
);
});
})
Button
(
"
2 addWatcherTest
"
).
onClick
(()
=>
{
// 根据传入的订阅参数添加一个应用事件订阅者
hiAppEvent
.
addWatcher
({
name
:
"
watcher1
"
,
appEventFilters
:
[{
domain
:
"
test_domain
"
}],
triggerCondition
:
{
row
:
2
,
size
:
1000
,
timeOut
:
2
},
onTrigger
:
function
(
curRow
,
curSize
,
holder
)
{
// 返回的holder对象为null表示订阅过程发生异常,因此在记录错误日志后直接返回
if
(
holder
==
null
)
{
console
.
error
(
"
HiAppEvent holder is null
"
);
return
;
}
// 设置每次获取的订阅事件包大小阈值为1000字节
holder
.
setSize
(
1000
);
let
eventPkg
=
null
;
// 根据设置阈值大小去获取订阅事件包(返回的事件包对象为null,表示当前订阅数据被全部取出)
while
((
eventPkg
=
holder
.
takeNext
())
!=
null
)
{
// 对获取的订阅事件包进行解析,并将解析结果打印在Log界面
console
.
info
(
`HiAppEvent eventPkg.packageId=
${
eventPkg
.
packageId
}
`
);
console
.
info
(
`HiAppEvent eventPkg.row=
${
eventPkg
.
row
}
`
);
console
.
info
(
`HiAppEvent eventPkg.size=
${
eventPkg
.
size
}
`
);
// 对订阅事件包中的事件字符串数组进行遍历解析
for
(
const
eventInfo
of
eventPkg
.
data
)
{
console
.
info
(
`HiAppEvent eventPkg.data=
${
eventInfo
}
`
);
}
}
}
});
})
Button
(
"
3 removeWatcherTest
"
).
onClick
(()
=>
{
// 移除指定名称的应用事件订阅者
hiAppEvent
.
removeWatcher
({
name
:
"
watcher1
"
console.error(
`HiAppEvent err.code: ${err.code}, err.message: ${err.message}`
)
})
})
}
...
...
@@ -121,26 +126,20 @@
}
}
```
3. 点击IDE界面中的运行按钮,运行应用工程,然后在应用界面中点击按钮“writeTest”,触发一次按钮点击事件打点。
2.
点击IDE界面中的运行按钮,运行应用工程。
3.
在应用界面点击按钮1进行一次事件打点,可以在Log窗口看到打点成功的日志:
```
success to write event: 0
```
4.
在应用界面点击按钮2进行添加事件订阅者,再多次点击按钮1进行多次打点。在满足回调任一触发条件(事件数量、事件数据大小、定时时长)后,可以在Log窗口看到回调函数触发后获取到的订阅事件包的日志:
4. 最终,可以在Log窗口看到按钮点击事件打点成功的日志,以及触发订阅回调后对打点事件数据的处理日志:
```
```
js
HiAppEvent success to write event
HiAppEvent eventPkg.packageId=0
HiAppEvent eventPkg.row=
2
HiAppEvent eventPkg.size=
308
HiAppEvent eventPkg.
data={"domain_":"test_domain","name_":"test_event","type_":1,"time_":1502096107556,"tz_":"+0000","pid_":4204,"tid_":4223,"int_data":100,"str_data":"strValue"
}
HiAppEvent eventPkg.row=
1
HiAppEvent eventPkg.size=
124
HiAppEvent eventPkg.
info={"domain_":"button","name_":"click","type_":4,"time_":1670268234523,"tz_":"+0800","pid_":3295,"tid_":3309,"click_time":100
}
```
5.
在应用界面点击按钮3进行移除事件订阅者,再多次点击按钮1进行多次打点,此时在Log窗口不再能看到订阅触发的日志。
## 相关实例
针对应用事件开发,有以下相关实例可供参考:
...
...
zh-cn/application-dev/dfx/hiappevent-overview.md
已删除
100644 → 0
浏览文件 @
c2569dcb
# 应用事件打点概述
HiAppEvent提供了应用事件打点接口,为应用提供事件打点的功能,用于帮助应用记录在运行过程中发生的故障信息、统计信息、安全信息、用户行为信息,以支撑开发者分析应用的运行情况。
## 基本概念
HiAppEvent模块支持应用事件业务的开发,提供应用事件相关的功能,主要包括应用事件落盘、应用事件订阅、应用事件清理、打点功能配置等功能。
**打点**
:记录由用户操作引起的变化,提供业务数据信息,以供开发、产品、运维分析。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录