/*
* Copyright (c) Huawei Technologies Co., Ltd. 2024-2025. All rights reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import hiSysEvent from '@ohos.hiSysEvent';
import { BusinessError } from '@ohos.base';
import taskpool from '@ohos.taskpool';
import { LogUtil } from '../utils/LogUtil';
import { HiSysAiBarEventGroup, HisysScreenAndSleepEventGroup, HiSysSpaceManagerGroup } from './BehaviorEventConsts';
import { HiSysModeConnectStaticEventGroup } from './StaticEventConsts';
export interface CommonInterfaceCallFaultParams {
FAULT_CATEGORY: string;
FAULT_SUBCATEGORY: string;
FAULT_INFO?: string;
}
interface ReportParams {
PACKAGE_NAME: string;
PROCESS_NAME: string;
NAME: string;
VALUE?: string | string[];
STATUS?: string;
}
interface UeReportParams {
PNAMEID: string;
PVERSIONID: string;
VALUE?: string | string[];
}
interface AbilityUeReportParams {
PNAMEID: string;
PVERSIONID: string;
NAME: string | string[];
VALUE?: string | string[];
STATUS?: string;
}
interface UeReportRingTonetParams {
PNAMEID: string;
PVERSIONID: string;
SIM_CARD: string;
IS_SYSTEM_RINGTONE: string;
VALUE: string;
}
interface UeReportPowerManagerParams {
PNAMEID: string;
PVERSIONID: string;
SCREENOFF_AC_TIMEOUT?: string;
SCREENOFF_DC_TIMEOUT?: string;
POWER_KEY_SETTINGS?: string;
SWITCH_AC_SETTINGS?: string;
SWITCH_DC_SETTINGS?: string;
IS_HIBERNATE?: string;
WAKE_ON_LID_OPEN?: string;
}
enum HwSystemManagerFormPage {
HWSYSTEMMANAGERFORM_STORAGE = 'HWSYSTEMMANAGERFORM_STORAGE',
HWSYSTEMMANAGERFORM_BATTERY = 'HWSYSTEMMANAGERFORM_BATTERY',
HWSYSTEMMANAGERFORM_DATA_USAGE = 'HWSYSTEMMANAGERFORM_DATA_USAGE',
HWSYSTEMMANAGERFORM_BLOCKLIST = 'HWSYSTEMMANAGERFORM_BLOCKLIST',
}
interface UeReportAccRecommendationParam {
TRANSACTION_ID: string,
RECOMMENDATION_ID: string,
COUNT: number,
PNAMEID: string,
PVERSIONID: string,
}
interface FloatingNavReportParams {
PNAMEID: string;
PVERSIONID: string;
IS_ON?: string;
}
interface SpaceManagerReportParam {
CREATE_TYPE?: number;
DELETE_TYPE?: number;
CREATE_RES?: number;
DELETE_RES?: number;
}
interface CallerReportParam {
PNAMEID: string,
PVERSIONID: string,
CALLER_BUNDLE_NAME?: string,
APP_IDENTIFIER?: string,
CALLER_ABILITY?: string,
URI?: string
}
@Concurrent
async function getApplicationVersionConcurrent(): Promise<string> {
const bundleManager = await import('@ohos.bundle.bundleManager');
let bundleInfo =
await bundleManager.default.getBundleInfoForSelf(bundleManager.default.BundleFlag.GET_BUNDLE_INFO_DEFAULT);
LogUtil.info(`getApplicationVersion ${bundleInfo?.versionName}`);
return bundleInfo?.versionName;
}
@Concurrent
function writeHiSysEvent(info: hiSysEvent.SysEventInfo): void {
hiSysEvent.write(info).then(() => {
LogUtil.info(`HiSysEventUtil write ${info.name} success.`);
}).catch((err: BusinessError) => {
LogUtil.error(`HiSysEventUtil write ${info.name} error. code: ${err?.code} ,message: ${err?.message}`);
});
}
/**
* 应用打点工具类
*
* @since 2022-11-8
*/
export class HiSysEventUtil {
public static tag: string = 'HiSysEventUtil : ';
public static applicationVersion: string;
public static readonly SETTING_DOMAIN_UE: string = 'SETTINGS_APP_UE';
private static readonly SETTING_DOMAIN: string = 'SETTINGS_APP';
public static PACKAGE_NAME: string = 'com.ohos.settings';
public static COMMON_INTERFACE_CALL_FAULT_EVENT_NAME: string = 'COMMON_INTERFACE_CALL_FAULT';
private static PROCESS_NAME: string = 'Settings';
private static ENTER_ENTRY_EVENT: string = 'ENTER_ENTRY_EVENT';
private static CLICK_BUTTON_EVENT: string = 'CLICK_BUTTON_EVENT';
private static SWITCH_EVENT: string = 'SWITCH_EVENT';
private static RADIO_EVENT: string = 'RADIO_EVENT';
private static OPTIONS_EVENT: string = 'OPTIONS_EVENT';
private static SLIDER_EVENT: string = 'SLIDER_EVENT';
private static SEARCH_EVENT: string = 'SEARCH_EVENT';
private static GET_SETTING_SWITCH: string = 'GET_SETTING_SWITCH';
private static SET_SETTING_SWITCH: string = 'SET_SETTING_SWITCH';
private static GET_SETTING_SEEKBAR: string = 'GET_SETTING_SEEKBAR';
private static SET_SETTING_SEEKBAR: string = 'SET_SETTING_SEEKBAR';
private static GET_SETTING_OPTION: string = 'GET_SETTING_OPTION';
private static SET_SETTING_OPTION: string = 'SET_SETTING_OPTION';
private static SETTING_PAGE_JUMP: string = 'SETTING_PAGE_JUMP';
private static HWSYSTEMMANAGERFORM_REDIRECT: string = 'HWSYSTEMMANAGERFORM_REDIRECT';
private static SYSTEM_NAV_UE: string = 'SYSTEM_NAV_UE';
private static FEATURE_EVENT: string = 'FEATURE_EVENT';
private static readonly SPACE_MGR_UE: string = 'SPACE_MGR_UE';
private static CARD_ONE: string = '1';
private static CARD_TWO: string = '2';
private static RINGTONE_CARD_ONE: number = 0;
private static RINGTONE_CARD_TWO: number = 1;
private static MESSAGE_CARD_ONE: number = 20;
private static MESSAGE_CARD_TWO: number = 21;
private static NOTIFICATION_CARD_TWO: number = 40;
private static async reportEvent(eventType: hiSysEvent.EventType, eventName: string,
msg: Object, name: string, domain?: string): Promise<void> {
LogUtil.info(`${HiSysEventUtil.tag} event_name: ${eventName} ; name: ${name} ;`);
let info: hiSysEvent.SysEventInfo = {
domain: domain ?? HiSysEventUtil.SETTING_DOMAIN,
name: eventName,
eventType: eventType,
params: msg
};
try {
let writeTask: taskpool.Task = new taskpool.Task(writeHiSysEvent, info);
taskpool.execute(writeTask, taskpool.Priority.MEDIUM);
} catch (error) {
LogUtil.error(`${HiSysEventUtil.tag} catch exception when writeHiSysEvent, errmsg: ${error?.message}`);
}
return;
}
static async reportDefaultBehaviorEvent(evenName: string, value?: string): Promise<void> {
let param = {
PACKAGE_NAME: HiSysEventUtil.getPkgName(),
PROCESS_NAME: HiSysEventUtil.getProcessName(),
VALUE: value,
} as ReportParams;
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, evenName, param, evenName);
return;
}
/**
* 铃声类型枚举
*/
private static changeToneTypeUtils(toneType: string) {
if (toneType === 'ring_tone_settings') {
return 'UPDATE_RINGTONE'
} else if (toneType === 'Messaging_tone_settings') {
return 'UPDATE_SMS_RINGTONE'
} else if (toneType === 'notification_tone_settings') {
return 'UPDATE_NOTIFICATION_RINGTONE'
} else {
return ''
}
}
/**
* 振动类型枚举
*/
private static changeVibrateTypeUtils(vibrateType: number) {
if (vibrateType === HiSysEventUtil.RINGTONE_CARD_ONE ||
vibrateType === HiSysEventUtil.RINGTONE_CARD_TWO) {
return 'SET_RINGTONE_VIBRATION_MODE'
} else if (vibrateType === HiSysEventUtil.MESSAGE_CARD_ONE ||
vibrateType === HiSysEventUtil.MESSAGE_CARD_TWO) {
return 'SET_SMS_RINGTONE_VIBRATE_MODE'
} else if (vibrateType === HiSysEventUtil.NOTIFICATION_CARD_TWO) {
return 'SET_NOTIFY_RINGTONE_VIBRATE_MODE'
} else {
return ''
}
}
static async reportChoseRingToneBehaviorEventByUE(value: string, navKey: string,
isSystem: boolean, card: boolean): Promise<void> {
if (!HiSysEventUtil.applicationVersion) {
await HiSysEventUtil.getApplicationVersion();
}
const evenName: string = HiSysEventUtil.changeToneTypeUtils(navKey);
let param = {
PNAMEID: HiSysEventUtil.getPkgName(),
PVERSIONID: HiSysEventUtil.applicationVersion,
SIM_CARD: card ? HiSysEventUtil.CARD_ONE : HiSysEventUtil.CARD_TWO,
IS_SYSTEM_RINGTONE: isSystem ? '1' : '0',
VALUE: value
} as UeReportRingTonetParams;
await HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR,
evenName, param, evenName, HiSysEventUtil.SETTING_DOMAIN_UE);
return;
}
static async reportChoseVibtateBehaviorEventByUE(value: string | undefined, card: number): Promise<void> {
if (!HiSysEventUtil.applicationVersion) {
await HiSysEventUtil.getApplicationVersion();
}
const evenName: string = HiSysEventUtil.changeVibrateTypeUtils(card);
let param = {
PNAMEID: HiSysEventUtil.getPkgName(),
PVERSIONID: HiSysEventUtil.applicationVersion,
SIM_CARD: String(card),
VALUE: value
} as UeReportRingTonetParams;
await HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR,
evenName, param, evenName, HiSysEventUtil.SETTING_DOMAIN_UE);
return;
}
static async reportDefaultBehaviorEventByUE(evenName: string, value?: string | number): Promise<void> {
if (!HiSysEventUtil.applicationVersion) {
await HiSysEventUtil.getApplicationVersion();
}
let param = {
PNAMEID: HiSysEventUtil.getPkgName(),
PVERSIONID: HiSysEventUtil.applicationVersion,
VALUE: value
} as UeReportParams;
await HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR,
evenName, param, evenName, HiSysEventUtil.SETTING_DOMAIN_UE);
return;
}
static async reportBehaviorEventByUE(evenName: string, param: Record<string, Object>): Promise<void> {
if (!HiSysEventUtil.applicationVersion) {
HiSysEventUtil.getApplicationVersion();
}
param.PNAMEID = HiSysEventUtil.getPkgName();
param.PVERSIONID = HiSysEventUtil.applicationVersion;
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR,
evenName, param, evenName, HiSysEventUtil.SETTING_DOMAIN_UE);
return;
}
static async abilityReportDefaultBehaviorEventByUE(evenName: string, name?: string, value?: string): Promise<void> {
if (!HiSysEventUtil.applicationVersion) {
HiSysEventUtil.getApplicationVersion();
}
let params = {
PNAMEID: HiSysEventUtil.getPkgName(),
PVERSIONID: HiSysEventUtil.applicationVersion,
NAME: name,
VALUE: value,
} as AbilityUeReportParams;
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR,
evenName, params, evenName, HiSysEventUtil.SETTING_DOMAIN_UE);
return;
}
static async serviceStatusDefaultBehaviorEventByUE(evenName: string, name?: string,
value?: string, status?: string): Promise<void> {
if (!HiSysEventUtil.applicationVersion) {
HiSysEventUtil.getApplicationVersion();
}
let params = {
PNAMEID: HiSysEventUtil.getPkgName(),
PVERSIONID: HiSysEventUtil.applicationVersion,
NAME: name,
VALUE: value,
STATUS: status,
} as AbilityUeReportParams;
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR,
evenName, params, evenName, HiSysEventUtil.SETTING_DOMAIN_UE);
return;
}
public static async getApplicationVersion(): Promise<void> {
let versionTask: taskpool.Task = new taskpool.Task(getApplicationVersionConcurrent);
let versionName: string = await taskpool.execute(versionTask, taskpool.Priority.MEDIUM) as string;
HiSysEventUtil.applicationVersion = versionName;
}
private static reportBehaviorEvent(eventName: string, msg: Object, name: string): void {
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, eventName, msg, name);
return;
}
static reportBehaviorEventEx(eventName: string, msg: Object, name: string, domain: string): void {
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, eventName, msg, name, domain);
return;
}
static async reportDefaultFaultEvent(eventName: string, name: string, value?: string): Promise<void> {
let params = {
PACKAGE_NAME: HiSysEventUtil.getPkgName(),
PROCESS_NAME: HiSysEventUtil.getProcessName(),
NAME: name,
VALUE: value,
} as ReportParams;
await HiSysEventUtil.reportEvent(hiSysEvent.EventType.FAULT, eventName, params, name);
return;
}
static reportFaultEvent(eventName: string, msg: Object, name: string): void {
HiSysEventUtil.reportEvent(hiSysEvent.EventType.FAULT, eventName, msg, name);
return;
}
static reportStatisticEvent(eventName: string, msg: Object, name: string): void {
HiSysEventUtil.reportEvent(hiSysEvent.EventType.STATISTIC, eventName, msg, name);
return;
}
static reportStatisticEventByDomain(eventName: string, msg: Object, name: string, domain: string): void {
HiSysEventUtil.reportEvent(hiSysEvent.EventType.STATISTIC, eventName, msg, name, domain);
return;
}
static reportStatusStatisticEvent(eventName: string, value: string): void {
if (eventName === HiSysModeConnectStaticEventGroup.COLLABORATION_SERVICE_SCHEDULED) {
HiSysEventUtil.reportUEStatisticEvent(eventName, value);
return;
}
let params = {
PACKAGE_NAME: HiSysEventUtil.getPkgName(),
PROCESS_NAME: HiSysEventUtil.getProcessName(),
VALUE: value,
} as ReportParams;
HiSysEventUtil.reportEvent(hiSysEvent.EventType.STATISTIC, eventName, params, eventName,
HiSysEventUtil.SETTING_DOMAIN_UE);
return;
}
static async reportUEStatisticEvent(eventName: string, value: string): Promise<void> {
if (!HiSysEventUtil.applicationVersion) {
await HiSysEventUtil.getApplicationVersion();
}
let params: UeReportParams = {
PNAMEID: HiSysEventUtil.getPkgName(),
PVERSIONID: HiSysEventUtil.applicationVersion,
VALUE: value,
}
HiSysEventUtil.reportEvent(hiSysEvent.EventType.STATISTIC, eventName,
params, eventName, HiSysEventUtil.SETTING_DOMAIN_UE);
}
static async reportStatisticEventByUE(evenName: string, param: Record<string, Object>): Promise<void> {
if (!HiSysEventUtil.applicationVersion) {
HiSysEventUtil.getApplicationVersion();
}
param.PNAMEID = HiSysEventUtil.getPkgName();
param.PVERSIONID = HiSysEventUtil.applicationVersion;
HiSysEventUtil.reportEvent(hiSysEvent.EventType.STATISTIC,
evenName, param, evenName, HiSysEventUtil.SETTING_DOMAIN_UE);
}
static async reportNotDisturbEvent(evenName: string, param: object): Promise<void> {
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, evenName, param, evenName,
HiSysEventUtil.SETTING_DOMAIN_UE);
return;
}
static getPkgName(): string {
return HiSysEventUtil.PACKAGE_NAME;
}
static getProcessName(): string {
return HiSysEventUtil.PROCESS_NAME;
}
/**
* 跳转设置页面打点
*/
static reportEntryEventByUE(name: string, value?: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
};
HiSysEventUtil.reportBehaviorEventEx(HiSysEventUtil.ENTER_ENTRY_EVENT, params, name,
HiSysEventUtil.SETTING_DOMAIN_UE);
}
/**
* 菜单入口打点
*/
static reportEntryEvent(name: string, value?: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
};
HiSysEventUtil.reportBehaviorEvent(HiSysEventUtil.ENTER_ENTRY_EVENT, params, name);
}
/**
* 操作按钮打点
*/
static reportButtonEvent(name: string, value: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
}
HiSysEventUtil.reportBehaviorEvent(HiSysEventUtil.CLICK_BUTTON_EVENT, params, name);
}
/**
* 开关项打点
*/
static reportSwitchEvent(name: string, status: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
STATUS: status
}
HiSysEventUtil.reportBehaviorEvent(HiSysEventUtil.SWITCH_EVENT, params, name);
}
/**
* 单选项打点
*/
static reportRadioEvent(name: string, value: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
}
HiSysEventUtil.reportBehaviorEvent(HiSysEventUtil.RADIO_EVENT, params, name);
}
/**
* 复选项打点
*/
static reportOptionsEvent(name: string, value: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
}
HiSysEventUtil.reportBehaviorEvent(HiSysEventUtil.OPTIONS_EVENT, params, name);
}
/**
* 多选项打点
*/
static reportCheckboxEvent(name: string, value: string[]) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
}
HiSysEventUtil.reportBehaviorEvent(HiSysEventUtil.OPTIONS_EVENT, params, name);
}
/**
* 滑动条打点
*/
static reportSliderEvent(name: string, value: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
}
HiSysEventUtil.reportBehaviorEvent(HiSysEventUtil.SLIDER_EVENT, params, name);
}
/**
* 搜索数据初始化打点
*/
static searchReportEvent(name: string, value: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
}
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, HiSysEventUtil.SEARCH_EVENT, params, name);
return;
}
/**
* 意图框架查询开关类状态打点
*/
static getSwitchReportEvent(name: string, value: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
}
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, HiSysEventUtil.GET_SETTING_SWITCH, params, name);
return;
}
/**
* 意图框架设置开关类状态打点
*/
static setSwitchReportEvent(name: string, value: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
}
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, HiSysEventUtil.SET_SETTING_SWITCH, params, name);
return;
}
/**
* 意图框架查询滑动条类状态打点
*/
static getSeekbarReportEvent(name: string, value: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
}
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, HiSysEventUtil.GET_SETTING_SEEKBAR, params, name);
return;
}
/**
* 意图框架设置滑动条类状态打点
*/
static setSeekbarReportEvent(name: string, value: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
}
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, HiSysEventUtil.SET_SETTING_SEEKBAR, params, name);
return;
}
/**
* 意图框架查询选项类类状态打点
*/
static getOptionReportEvent(name: string, value: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
}
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, HiSysEventUtil.GET_SETTING_OPTION, params, name);
return;
}
/**
* 意图框架设置选项类状态打点
*/
static setOptionReportEvent(name: string, value: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name,
VALUE: value
}
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, HiSysEventUtil.SET_SETTING_OPTION, params, name);
return;
}
/**
* 设置意图框架页面跳转打点
*/
static settingPageJumpReportEvent(name: string) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: name
}
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, HiSysEventUtil.SETTING_PAGE_JUMP, params, name);
return;
}
/**
* AI横条设置页开关
* @param switchType 开关名
* @param isOn 是否开启
*/
static reportAiBarSettingSwitchParams(switchType: string, isOn: boolean): void {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: switchType,
STATUS: isOn + ''
}
HiSysEventUtil.reportBehaviorEventEx(HiSysAiBarEventGroup.AI_BAR_SWITCH, params, HiSysAiBarEventGroup.AI_BAR_SWITCH,
HiSysEventUtil.SYSTEM_NAV_UE);
}
/**
* 系统导航页三键导航开关
* @param switchType 开关名
* @param isOn 是否开启
*/
static async reportFloatingNavSwitchParams(switchType: string, isOn: boolean): Promise<void> {
if (!HiSysEventUtil.applicationVersion) {
await HiSysEventUtil.getApplicationVersion();
}
let param: FloatingNavReportParams = {
PNAMEID: HiSysEventUtil.getPkgName(),
PVERSIONID: HiSysEventUtil.applicationVersion,
IS_ON: isOn + ''
};
HiSysEventUtil.reportBehaviorEventEx(HiSysAiBarEventGroup.FLOATING_NAV_SWITCH, param,
HiSysAiBarEventGroup.FLOATING_NAV_SWITCH, HiSysEventUtil.SYSTEM_NAV_UE);
}
/**
* 系统导航页悬浮球开关
* @param switchType 开关名
* @param isOn 是否开启
*/
static async reportFloatingBallSwitchParams(switchType: string, isOn: boolean): Promise<void> {
if (!HiSysEventUtil.applicationVersion) {
await HiSysEventUtil.getApplicationVersion();
}
let param: FloatingNavReportParams = {
PNAMEID: HiSysEventUtil.getPkgName(),
PVERSIONID: HiSysEventUtil.applicationVersion,
IS_ON: isOn + ''
};
HiSysEventUtil.reportBehaviorEventEx(HiSysAiBarEventGroup.FLOATING_BALL_SWITCH, param,
HiSysAiBarEventGroup.FLOATING_BALL_SWITCH, HiSysEventUtil.SYSTEM_NAV_UE);
}
/**
* 高級安全模式下不安全弹框按钮打点
*/
/**
* 高級安全模式下不安全弹框按钮打点
* @param securityType 安全类型
* @param code 1表示继续加入 0表示放弃
*/
static reportUnsafeWifiDialogButtonEvent(securityType: string, isJoin: boolean) {
let params: ReportParams = {
PACKAGE_NAME: HiSysEventUtil.PACKAGE_NAME,
PROCESS_NAME: HiSysEventUtil.PROCESS_NAME,
NAME: 'WIFI_PROTOCOL',
VALUE: securityType,
STATUS: isJoin ? '1' : '0'
}
HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR, HiSysEventUtil.FEATURE_EVENT, params, 'WIFI_PROTOCOL');
return;
}
/**
* 手机管家桌面卡片跳转设置页面打点
* @param originPageName 页面uri
*/
static async hwSystemManagerFormPageJumpReportEvent(originPageName: string): Promise<void> {
const mappedPageName: string = (() => {
switch (originPageName) {
case 'storage_settings':
return HwSystemManagerFormPage.HWSYSTEMMANAGERFORM_STORAGE;
case 'battery':
return HwSystemManagerFormPage.HWSYSTEMMANAGERFORM_BATTERY;
case 'mobile_data_manage_entry':
return HwSystemManagerFormPage.HWSYSTEMMANAGERFORM_DATA_USAGE;
case 'privacy_settings':
return HwSystemManagerFormPage.HWSYSTEMMANAGERFORM_BLOCKLIST;
default:
LogUtil.warn(`Unknown pageName: ${originPageName}`);
return originPageName;
}
})();
LogUtil.info(`Report event for: ${mappedPageName}`);
if (!HiSysEventUtil.applicationVersion) {
await HiSysEventUtil.getApplicationVersion();
}
const params: UeReportParams = {
PNAMEID: HiSysEventUtil.getPkgName(),
PVERSIONID: HiSysEventUtil.applicationVersion,
VALUE: mappedPageName,
}
await HiSysEventUtil.reportEvent(
hiSysEvent.EventType.BEHAVIOR,
HiSysEventUtil.HWSYSTEMMANAGERFORM_REDIRECT,
params,
HiSysEventUtil.HWSYSTEMMANAGERFORM_REDIRECT,
HiSysEventUtil.SETTING_DOMAIN_UE,
);
return;
}
/**
* 账号建议事件上报
* @param eventName 事件名称
* @param transactionId 事务id,可以跟账号全局服务中的打点进行关联
* @param recommendationId 建议id
* @param count 建议数量
*/
static async reportAccountRecommendationEvent(eventName: string, transactionId: string,
recommendationId: string, count: number) {
if (!HiSysEventUtil.applicationVersion) {
await HiSysEventUtil.getApplicationVersion();
}
if (count === 0) {
recommendationId = '0';
}
let params: UeReportAccRecommendationParam = {
PNAMEID: HiSysEventUtil.getPkgName(),
PVERSIONID: HiSysEventUtil.applicationVersion,
TRANSACTION_ID: transactionId,
RECOMMENDATION_ID: recommendationId,
COUNT: count
}
await HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR,
eventName, params, eventName, HiSysEventUtil.SETTING_DOMAIN_UE);
}
/**
* 电源管理事件枚举
*/
private static powerManagerEventNameUtils(evenName: string, value?: string): UeReportPowerManagerParams {
let param = {
PNAMEID: HiSysEventUtil.getPkgName(),
PVERSIONID: HiSysEventUtil.applicationVersion
} as UeReportPowerManagerParams;
switch (evenName) {
case HisysScreenAndSleepEventGroup.CHOOSE_SCREENOFF_ACTIMEOUT_RADIO:
param.SCREENOFF_AC_TIMEOUT = value;
break;
case HisysScreenAndSleepEventGroup.CHOOSE_SCREENOFF_DCTIMEOUT_RADIO:
param.SCREENOFF_DC_TIMEOUT = value;
break;
case HisysScreenAndSleepEventGroup.CHOOSE_POWER_KEY_SETTINGS_RADIO:
param.POWER_KEY_SETTINGS = value;
break;
case HisysScreenAndSleepEventGroup.CHOOSE_SWITCH_AC_SETTINGS_RADIO:
param.SWITCH_AC_SETTINGS = value;
break;
case HisysScreenAndSleepEventGroup.CHOOSE_SWITCH_DC_SETTINGS_RADIO:
param.SWITCH_DC_SETTINGS = value;
break;
case HisysScreenAndSleepEventGroup.CHOOSE_HIBERNATE_TOGGLE:
param.IS_HIBERNATE = value;
break;
case HisysScreenAndSleepEventGroup.CHOOSE_WAKE_ON_LID_OPEN_TOGGLE:
param.WAKE_ON_LID_OPEN = value;
break;
default:
LogUtil.warn(`powerManagerEventNameUtils Unknown eventName: ${evenName}`);
break;
}
return param;
}
/**
* 电源管理事件上报
* @param eventName 事件名称
* @param value 事件参数
*/
static async reportPowerEventByUE(evenName: string, value?: string): Promise<void> {
try {
if (!HiSysEventUtil.applicationVersion) {
await HiSysEventUtil.getApplicationVersion();
}
let param: UeReportPowerManagerParams = HiSysEventUtil.powerManagerEventNameUtils(evenName, value);
await HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR,
evenName, param, evenName, HiSysEventUtil.SETTING_DOMAIN_UE);
return;
} catch (e) {
LogUtil.error(`reportPowerEventByUE error: ${e?.code}`);
return;
}
}
/**
* 空间事件上报
* @param eventName 事件名称
* @param typeId 事务id
* @param res 执行结果
*/
static async reportSpaceEventByUE(evenName: string, typeId: number, res: number): Promise<void> {
let param: SpaceManagerReportParam = {};
switch (evenName) {
case HiSysSpaceManagerGroup.SPACE_CREATE_EVENT:
param.CREATE_TYPE = typeId;
param.CREATE_RES = res;
break;
case HiSysSpaceManagerGroup.SPACE_DELETE_EVENT:
param.DELETE_TYPE = typeId;
param.DELETE_RES = res;
break;
default:
LogUtil.warn(`reportSpaceEventByUE Unknown eventName: ${evenName}`);
break;
}
await HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR,
evenName, param, evenName, HiSysEventUtil.SPACE_MGR_UE);
}
static async reportEnterSettingEventByUE(evenName: string, callerInfo: string): Promise<void> {
if (!HiSysEventUtil.applicationVersion) {
await HiSysEventUtil.getApplicationVersion();
}
try {
let caller: Record<string, string> = JSON.parse(callerInfo) as Record<string, string>;
let param: CallerReportParam = {
PNAMEID: HiSysEventUtil.getPkgName(),
PVERSIONID: HiSysEventUtil.applicationVersion,
CALLER_BUNDLE_NAME: caller?.['bundleName'],
APP_IDENTIFIER: caller?.['appIdentifier'],
CALLER_ABILITY: caller?.['abilityName'],
URI: caller?.['uri']
};
await HiSysEventUtil.reportEvent(hiSysEvent.EventType.BEHAVIOR,
evenName, param, evenName, HiSysEventUtil.SETTING_DOMAIN_UE);
} catch (e) {
LogUtil.error(`reportEnterSettingEventByUE error: ${e?.code} ${e?.message}`);
}
}
}