본문으로 건너뛰기

자동 수집

최근 업데이트 2026. 10. 03.

OpenHarmony SDK는 설치, 시작, 종료 등의 이벤트 자동 수집을 지원합니다.

1. 소개​

AE 시스템은 데이터를 자동으로 수집하는 인터페이스를 제공하며, 비즈니스 요구에 따라 자동으로 수집할 데이터를 직접 선택할 수 있습니다.

현재 지원하는 자동 수집 이벤트 유형은 다음과 같습니다.

  1. 설치 이벤트: APP이 설치된 행동을 기록합니다
  2. 시작 이벤트: APP을 여는 것과 백그라운드에서 APP을 여는 것을 포함합니다
  3. 종료 이벤트: APP을 닫는 것과 App이 백그라운드로 전환되는 것을 포함합니다
  4. 페이지 조회 이벤트: 유저가 APP에서 페이지(Ability)를 조회합니다
  5. 클릭 이벤트: 유저가 APP에서 컨트롤을 클릭합니다
  6. 크래시 이벤트: 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: string
    key2: 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 크래시 수집은 아직 지원하지 않습니다.
이 문서가 도움이 되었나요?