자동 수집
OpenHarmony SDK는 설치, 시작, 종료 등의 이벤트 자동 수집을 지원합니다.
1. 소개
AE 시스템은 데이터를 자동으로 수집하는 인터페이스를 제공하며, 비즈니스 요구에 따라 자동으로 수집할 데이터를 직접 선택할 수 있습니다.
현재 지원하는 자동 수집 이벤트 유형은 다음과 같습니다.
- 설치 이벤트: APP이 설치된 행동을 기록합니다
- 시작 이벤트: APP을 여는 것과 백그라운드에서 APP을 여는 것을 포함합니다
- 종료 이벤트: APP을 닫는 것과 App이 백그라운드로 전환되는 것을 포함합니다
- 페이지 조회 이벤트: 유저가 APP에서 페이지(Ability)를 조회합니다
- 클릭 이벤트: 유저가 APP에서 컨트롤을 클릭합니다
- 크래시 이벤트: APP에서 크래시가 발생하면 크래시 정보를 기록합니다(native 계층의 크래시는 아직 지원하지 않습니다)
다음에서는 각 데이터의 수집 방법을 자세히 소개합니다
2. 자동 수집 활성화
enableAutoTrack을 호출하여 자동 수집 기능을 활성화할 수 있습니다:
//APP 설치 이벤트 TDAutoTrackEventType.APP_INSTALL
//APP 시작 이벤트 TDAutoTrackEventType.APP_START
//APP 종료 이벤트 TDAutoTrackEventType.APP_END
//APP 페이지 조회 이벤트 TDAutoTrackEventType.APP_VIEW_SCREEN
//APP 컨트롤 클릭 이벤트 TDAutoTrackEventType.APP_CLICK
//APP 크래시 이벤트 TDAutoTrackEventType.APP_CRASH
TDAnalytics.enableAutoTrack(context,TDAutoTrackEventType.APP_START | TDAutoTrackEventType.APP_INSTALL | TDAutoTrackEventType.APP_END | TDAutoTrackEventType.APP_VIEW_SCREEN | TDAutoTrackEventType.APP_CLICK | TDAutoTrackEventType.APP_CRASH)
enableAutoTrack은 메인 스레드에서 호출해야 합니다. work 스레드에서 SDK를 초기화해야 하는 경우 아래 코드를 참고하십시오
const workerInstance = new worker.ThreadWorker("./workers/worker.ets");
TDAnalytics.enableAutoTrack(this.context,
TDAutoTrackEventType.APP_START | TDAutoTrackEventType.APP_INSTALL | TDAutoTrackEventType.APP_END |
TDAutoTrackEventType.APP_VIEW_SCREEN | TDAutoTrackEventType.APP_CRASH |
TDAutoTrackEventType.APP_CLICK,
(command: string, params: Object, appId?: string) => {
//트리거해야 하는 자동 수집 이벤트가 여기에서 콜백으로 전달되며, 메시지를 work 스레드로 보내 처리해야 함
workerInstance.postMessage({
type: command,
params: params
})
})
const workerPort = worker.workerPort;
workerPort.onmessage = (d: MessageEvents): void => {
if (d.data.type === 'track') {
TDAnalytics.track(d.data.params);
} else if (d.data.type === 'timeEvent') {
TDAnalytics.timeEvent(d.data.params);
} else if (d.data.type === 'flush') {
TDAnalytics.flush()
}
}
3. 상세 소개
3.1 설치 이벤트
APP 설치 이벤트는 APP의 실제 설치를 기록하며 APP 시작 시 전송됩니다. 이벤트 트리거 시간은 APP 설치 후 처음 시작한 시간입니다. APP 업그레이드는 설치 이벤트를 트리거하지 않으며, 삭제 후 재설치하면 설치 이벤트가 전송됩니다.
- 이벤트 이름: ta_app_install
3.2 시작 이벤트
APP 시작 이벤트는 유저가 APP을 열거나 백그라운드에서 APP을 깨울 때 트리거됩니다. 이벤트에 대한 자세한 소개는 다음과 같습니다.
- 이벤트 이름: ta_app_start
- 시스템 속성:
#resume_from_background, 불리언 타입이며 APP을 유저가 열었는지 백그라운드에서 깨웠는지를 나타냅니다. 값이 true이면 백그라운드에서 깨운 것이고, false이면 직접 연 것입니다. - ApplicationStateChangeCallback의 onApplicationForeground 콜백으로 트리거됩니다
3.3 종료 이벤트
APP 종료 이벤트는 유저가 APP을 닫거나 APP을 백그라운드로 전환할 때 트리거됩니다. 이벤트에 대한 자세한 소개는 다음과 같습니다.
- 이벤트 이름: ta_app_end
- 시스템 속성:
#duration, 숫자 타입이며 이번 APP 방문(시작부터 종료까지)의 시간을 나타냅니다. 단위는 초입니다. - ApplicationStateChangeCallback의 onApplicationBackground 콜백으로 트리거됩니다
3.4 페이지 조회 이벤트
APP 페이지 조회 이벤트는 유저가 페이지(Ability)를 조회할 때 트리거됩니다. 이벤트에 대한 자세한 소개는 다음과 같습니다.
- 이벤트 이름: ta_app_view
- 시스템 속성:
#screen_name, 문자열 타입이며 Ability의 단순 클래스 이름입니다
-
커스텀 페이지 데이터
- router 전환
router.pushUrl({url: 'pages/PageOne', params: {'ta_data_tag': {'key1': 'value1','key2': 234,'ignore': true}}})//ta_data_tag는 커스텀 파라미터//ignore가 true이면 해당 페이지의 조회 이벤트를 무시- navigation 전환
interface UserLoginParam {// 비즈니스 커스텀 파라미터customParams?: string//대상 페이지의 조회 이벤트에 추가할 커스텀 파라미터ta_data_tag?: ThinkingDataPageParams}interface ThinkingDataPageParams {key1: stringkey2: number,ignore?:boolean}let paramData: UserLoginParam = { customParams: 'AAA', ta_data_tag: { key1: 'xxx', key2: 18,ignore:true } }this.navPathStack.pushPath({name: 'NavDestinationTitle' + item,param: paramData});//ta_data_tag는 커스텀 파라미터//ignore가 true이면 해당 페이지의 조회 이벤트를 무시
3.5 클릭 이벤트
APP 컨트롤 클릭 이벤트는 유저가 컨트롤(view)을 클릭할 때 트리거됩니다
-
이벤트 이름: ta_app_click
-
시스템 속성:
#screen_name, 문자열 타입이며 컨트롤이 속한Activity의 패키지 이름.클래스 이름입니다#element_type, 문자열 타입이며 컨트롤의 유형입니다#element_id, 문자열 타입이며 컨트롤의 ID입니다 -
커스텀 파라미터
Button("Button", { type: ButtonType.Normal, stateEffect: true })
.width('30%')
.customProperty("ta_data_tag", {
'key1': 10,
'key2': 'this is a string',
'ignore':false
})
.onClick(() => {
})
//ta_data_tag는 커스텀 파라미터
//ignore가 true이면 해당 요소의 클릭 이벤트를 무시
3.6 크래시 이벤트
APP에서 처리되지 않은 예외가 발생하면 APP 크래시 이벤트가 전송됩니다
- 이벤트 이름: ta_app_crash
- 시스템 속성:
#app_crashed_reason, 문자 타입이며 크래시 발생 시의 스택 트레이스를 기록합니다 - ErrorObserver의 onUnhandledException으로 감지하며, native 크래시 수집은 아직 지원하지 않습니다.

