簡介
傳統的日志系統里匯聚了整個設備上所有程序運行的過程流水日志,難以識別其中的關鍵信息。因此,應用開發者需要一種數據打點機制,用來評估如訪問數、日活、用戶操作習慣以及影響用戶使用的關鍵因素等關鍵信息。
HiAppEvent是在系統層面為應用開發者提供的一種事件打點機制,用于幫助應用記錄在運行過程中發生的故障信息、統計信息、安全信息、用戶行為信息,以支撐開發者分析應用的運行情況。
基本概念
- 打點
記錄由用戶操作引起的變化,提供業務數據信息,以供開發、產品、運維分析。
事件設計規范
- 事件領域:用于標識事件的領域,建議設置為業務模塊名稱,以便于區分不同的業務模塊。
- 事件名稱:用于指定事件的名稱,建議設置為具體的業務名稱,以便于描述實際的業務意義。
- 事件類型:用于指定事件的類型,支持以下四種類型事件:
- 行為事件:用于記錄用戶日常操作行為的事件,例如按鈕點擊、界面跳轉等行為。
- 故障事件:用于定位和分析應用故障的事件,例如界面卡頓、掉網掉話等異常。
- 統計事件:用于統計和度量應用關鍵行為的事件,例如對使用時長、訪問數等的統計。
- 安全事件:用于記錄涉及應用安全行為的事件,例如密碼修改、用戶授權等行為。
- 事件參數:用于指定事件的參數,每個事件可以包含一組參數,建議設置為事件屬性或事件發生上下文信息,以便于描述事件的詳細信息。
接口說明
應用事件打點接口由hiAppEvent模塊提供。
打點接口功能介紹:
接口名 | 描述 |
---|---|
write(AppEventInfo info, AsyncCallback callback): void | 應用事件異步打點方法,使用callback方式作為異步回調。 |
write(AppEventInfo info): Promise | 應用事件異步打點方法,使用Promise方式作為異步回調。 |
訂閱接口功能介紹:
接口名 | 描述 |
---|---|
addWatcher(Watcher watcher): AppEventPackageHolder | 添加應用事件觀察者,以添加對應用事件的訂閱。 |
removeWatcher(Watcher watcher): void | 移除應用事件觀察者,以移除對應用事件的訂閱。 |
鴻蒙OS開發 | 更多內容↓點擊 | HarmonyOS與OpenHarmony技術 |
---|---|---|
鴻蒙技術文檔 | 開發知識更新庫gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md 在這。 |
開發步驟
更多鴻蒙開發文檔mau123789是v添加后免費領取。
以實現對用戶點擊按鈕行為的事件打點及訂閱為例,說明開發步驟。
- 新建一個ArkTS應用工程,編輯工程中的“entry > src > main > ets > entryability > EntryAbility.ts” 文件,在onCreate函數中添加對用戶點擊按鈕事件的訂閱,完整示例代碼如下:
import hilog from '@ohos.hilog'; import UIAbility from '@ohos.app.ability.UIAbility'; import Window from '@ohos.window' import hiAppEvent from '@ohos.hiviewdfx.hiAppEvent' export default class EntryAbility extends UIAbility { onCreate(want, launchParam) { hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); hilog.info(0x0000, 'testTag', '%{public}s', 'want param:' + JSON.stringify(want) ?? ''); hilog.info(0x0000, 'testTag', '%{public}s', 'launchParam:' + JSON.stringify(launchParam) ?? ''); hiAppEvent.addWatcher({ // 開發者可以自定義觀察者名稱,系統會使用名稱來標識不同的觀察者 name: "watcher1", // 開發者可以訂閱感興趣的應用事件,此處是訂閱了按鈕事件 appEventFilters: [{ domain: "button" }], // 開發者可以設置訂閱回調觸發的條件,此處是設置為事件打點數量滿足1個 triggerCondition: { row: 1 }, // 開發者可以自行實現訂閱回調函數,以便對訂閱獲取到的事件打點數據進行自定義處理 onTrigger: function (curRow, curSize, holder) { // 返回的holder對象為null,表示訂閱過程發生異常,因此在記錄錯誤日志后直接返回 if (holder == null) { hilog.error(0x0000, 'testTag', "HiAppEvent holder is null") return } let eventPkg = null // 根據設置閾值大小(默認為512KB)去獲取訂閱事件包,直到將訂閱數據全部取出 // 返回的事件包對象為null,表示當前訂閱數據已被全部取出,此次訂閱回調觸發結束 while ((eventPkg = holder.takeNext()) != null) { // 開發者可以對事件包中的事件打點數據進行自定義處理,此處是將事件打點數據打印在日志中 hilog.info(0x0000, 'testTag', `HiAppEvent eventPkg.packageId=%{public}d`, eventPkg.packageId) hilog.info(0x0000, 'testTag', `HiAppEvent eventPkg.row=%{public}d`, eventPkg.row) hilog.info(0x0000, 'testTag', `HiAppEvent eventPkg.size=%{public}d`, eventPkg.size) for (const eventInfo of eventPkg.data) { hilog.info(0x0000, 'testTag', `HiAppEvent eventPkg.info=%{public}s`, eventInfo) } } } }) } }
- 編輯工程中的“entry > src > main > ets > pages > Index.ets” 文件,添加一個按鈕并在其onClick函數中進行事件打點,以記錄按鈕點擊事件,完整示例代碼如下:
import hiAppEvent from '@ohos.hiviewdfx.hiAppEvent' import hilog from '@ohos.hilog' @Entry @Component struct Index { @State message: string = 'Hello World' build() { Row() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) Button("writeTest").onClick(()= >{ // 在按鈕點擊函數中進行事件打點,以記錄按鈕點擊事件 hiAppEvent.write({ // 事件領域定義 domain: "button", // 事件名稱定義 name: "click", // 事件類型定義 eventType: hiAppEvent.EventType.BEHAVIOR, // 事件參數定義 params: { click_time: 100 } }).then(() = > { hilog.info(0x0000, 'testTag', `HiAppEvent success to write event`) }).catch((err) = > { hilog.error(0x0000, 'testTag', `HiAppEvent err.code: ${err.code}, err.message: ${err.message}`) }) }) } .width('100%') } .height('100%') } }
- 點擊IDE界面中的運行按鈕,運行應用工程,然后在應用界面中點擊按鈕“writeTest”,觸發一次按鈕點擊事件打點。
- 最終,可以在Log窗口看到按鈕點擊事件打點成功的日志,以及觸發訂閱回調后對打點事件數據的處理日志:
HiAppEvent success to write event HiAppEvent eventPkg.packageId=0 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}
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
HarmonyOS
+關注
關注
79文章
1973瀏覽量
30143 -
OpenHarmony
+關注
關注
25文章
3713瀏覽量
16256 -
鴻蒙OS
+關注
關注
0文章
188瀏覽量
4383
發布評論請先 登錄
相關推薦
HarmonyOS應用事件打點開發指導
hiAppEvent 模塊提供,API 接口的具體使用說明(參數使用限制、具體取值范圍等)請參考應用事件打點 API 文檔。
打點接口功能介紹:
訂閱接口功能介紹:
開發步驟
以
發表于 12-21 11:02
鴻蒙OS應用程序開發
這份學習文檔主要是帶領大家在鴻蒙OS上學習開發一個應用程序,主要知識點如下:1、U-Boot引導文件燒寫方式;2、內核鏡像燒寫方式;3、鏡像運行。
發表于 09-11 14:39
鴻蒙OS適用的全場景到底什么意思?
鴻蒙系統(HarmonyOS),第一款基于微內核的全場景分布式OS,是華為自主研發的操作系統。華為在開發者大會HDC.2019上正式發布了鴻蒙系統,該系統將率先部署在智慧屏、車載終端、
發表于 09-25 09:25
鴻蒙 OS 應用開發初體驗
的操作系統平臺和開發框架。HarmonyOS 的目標是實現跨設備的無縫協同和高性能。
DevEco Studio
對標 Android Studio,開發鴻蒙 OS 應用的 IDE。
發表于 11-02 19:38
華為鴻蒙OS 2.0帶來哪些智慧體驗?
華為已經定于12月16日在北京發布鴻蒙OS 2.0手機開發者Beta版本。這不僅是手機鴻蒙OS的首次亮相,同時也意味著手機
鴻蒙OS 2.0手機開發者Beta版發布會在京舉辦
三個月前,鴻蒙OS 2.0正式在華為開發者大會2020亮相。12月16日,鴻蒙OS 2.0手機開發
華為正式推出鴻蒙OS的手機開發者Beta版
12月16日上午消息,華為今日宣布正式推出鴻蒙OS的手機開發者Beta版,華為消費者業務軟件部總裁王成錄表示,今年已有美的、九陽、老板電器、海雀科技搭載鴻蒙
鴻蒙OS2.0手機開發者Beta版登場
12 月 16 日,華為宣布正式推出鴻蒙 OS 的手機開發者 Beta 版,并正式面向個人/企業開發者公測鴻蒙 2.0,
華為開發者大會2021鴻蒙os在哪場
華為開發者大會2021將在10月22日-24日舉辦,地點為東莞松山湖,鴻蒙os 3.0或將與我們見面,那么華為開發者大會2021鴻蒙
評論