본문으로 건너뛰기

자동 수집

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

1. 자동 수집 소개​

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

현재 지원하는 자동 수집 데이터는 다음과 같습니다:

  1. APP 설치: APP이 설치된 것을 기록합니다
  2. APP 시작: APP을 여는 것과 백그라운드에서 깨우는 것을 포함합니다
  3. APP 종료: APP을 닫는 것과 백그라운드로 전환되는 것을 포함하며, 시작 후 사용 시간도 함께 수집합니다
  4. 유저가 APP에서 페이지(네이티브 페이지)를 조회합니다
  5. 유저가 APP에서 컨트롤을 클릭합니다
  6. APP에서 크래시가 발생하면 크래시 정보를 기록합니다

다음에서는 각 데이터의 수집 방법을 자세히 소개합니다

2. 자동 수집 활성화​

enableAutoTrack:을 호출하여 자동 수집 기능을 활성화할 수 있습니다.

[TDAnalytics enableAutoTrack:
TDAutoTrackEventTypeAppStart |//APP 시작 이벤트
TDAutoTrackEventTypeAppInstall |//APP 설치 이벤트
TDAutoTrackEventTypeAppEnd |//APP 종료 이벤트
TDAutoTrackEventTypeAppViewScreen |//APP 페이지 조회 이벤트
TDAutoTrackEventTypeAppClick |//APP 컨트롤 클릭 이벤트
TDAutoTrackEventTypeAppViewCrash];//APP 크래시 이벤트

3. 자동 수집 이벤트 상세 설명​

3.1 APP 설치 이벤트​

APP 설치 이벤트는 APP의 실제 설치를 기록하며 APP 시작 시 전송됩니다. 이벤트 트리거 시간은 APP 설치 후 처음 시작한 시간입니다. APP 업그레이드는 설치 이벤트를 트리거하지 않으며, 삭제 후 재설치하면 설치 이벤트가 전송됩니다.

  • 이벤트 이름: ta_app_install

3.2 APP 시작 이벤트​

APP 시작 이벤트는 유저가 APP을 열거나 백그라운드에서 APP을 깨울 때 트리거됩니다. 이벤트에 대한 자세한 소개는 다음과 같습니다.

  • 이벤트 이름: ta_app_start. 정상적인 APP 시작 과정에서 이 이벤트가 트리거됩니다.
  • 시스템 속성: #resume_from_background, 불리언 타입이며 APP을 유저가 열었는지 백그라운드에서 깨웠는지를 나타냅니다. 값이 true이면 백그라운드에서 깨운 것이고, false이면 직접 연 것입니다.
  • 이벤트 이름: ta_app_bg_start. APP이 백그라운드에서 시작될 때 이 이벤트가 트리거됩니다. 이 이벤트는 기본적으로 수집되지 않으며, 초기화할 때 설정 항목을 활성화해야 합니다.
    TDConfig *config = [[TDConfig alloc] init];
    config.appid = appId;
    config.serverUrl = serverUrl;

    // 백그라운드에서 이벤트 수집 허용
    config.trackRelaunchedInBackgroundEvents = YES;

    [TDAnalytics startAnalyticsWithConfig:config];
    [TDAnalytics enableAutoTrack:TDAutoTrackEventTypeAll];

3.3 APP 종료 이벤트​

APP 종료 이벤트는 유저가 APP을 닫거나 APP을 백그라운드로 전환할 때 트리거됩니다. 이벤트에 대한 자세한 소개는 다음과 같습니다.

  • 이벤트 이름: ta_app_end
  • 시스템 속성: #duration, 숫자 타입이며 이번 APP 방문(시작부터 종료까지)의 시간을 나타냅니다. 단위는 초입니다.

3.4 APP 페이지 조회 이벤트​

APP 페이지 조회 이벤트는 유저가 페이지(View Controller)를 전환할 때 트리거됩니다. 이벤트에 대한 자세한 소개는 다음과 같습니다.

  • 이벤트 이름: ta_app_view
  • 시스템 속성:
  • #screen_name, 문자열 타입이며 View Controller의 클래스 이름입니다
  • #title, 문자열 타입이며 View Controller의 제목으로, controller.navigationItem.title 속성 값을 사용합니다

페이지 조회 이벤트에 다른 속성을 추가하여 분석 가치를 확장할 수 있습니다. 다음은 페이지 조회 이벤트의 속성을 커스터마이즈하는 방법입니다.

3.4.1 페이지 조회 이벤트의 속성 커스터마이즈​

UIViewController를 상속한 View Controller는 Protocol <TDScreenAutoTracker>를 구현하여 속성과 페이지 URL 정보를 설정할 수 있습니다. SDK는 getTrackProperties의 반환값을 해당 View Controller의 APP 페이지 조회 이벤트에 자동으로 추가합니다. 또한 getScreenUrl의 반환값은 해당 페이지의 URL Schema로 사용됩니다. 해당 페이지의 조회 이벤트가 트리거되면 시스템 속성 #url이 추가되며, 값은 현재 페이지의 URL Schema입니다. 동시에 SDK는 이동 전 페이지의 URL Schema를 가져오며, 가져올 수 있으면 시스템 속성 #referrer에 이전 주소로 추가합니다.

@interface MYController : UITableViewController<TDScreenAutoTracker>
@end

@implementation MYController

//모든 APPID 인스턴스에 설정

- (NSDictionary *)getTrackProperties {
return @{@"PageName" : @"상품 상세 페이지", @"ProductId" : @12345};
}

- (NSString *)getScreenUrl {
return @"APP://test";
}

/** 다중 APPID 인스턴스별로 개별 설정
* - (NSDictionary *)getTrackPropertiesWithAppid{
* return @{@"appid1" : @{@"testTrackProperties" : @"테스트 페이지"},
* @"appid2" : @{@"testTrackProperties2" : @"테스트 페이지2"},
* };
* }
* -(NSDictionary *)getScreenUrlWithAppid {
* return @{@"appid1" : @"APP://test1",
* @"appid2" : @"APP://test2",
* };
* }
*/

@end

관련 시스템 속성:

  • #url, 문자열 타입이며 조회한 페이지의 URL을 나타냅니다
  • #referrer, 문자열 타입이며 페이지 이동 전 페이지의 URL을 나타냅니다

3.5 APP 컨트롤 클릭 이벤트​

APP 컨트롤 클릭 이벤트는 유저가 컨트롤을 클릭할 때 트리거됩니다

  • 이벤트 이름: ta_app_click
  • 시스템 속성:
  • #screen_name, 문자열 타입이며 컨트롤이 있는 View Controller의 클래스 이름입니다
  • #element_content, 문자열 타입이며 컨트롤의 내용입니다
  • #element_type, 문자열 타입이며 컨트롤의 유형입니다
  • #element_position, 문자열 타입이며 컨트롤 타입이 UITableView 또는 UICollectionView인 경우에만 존재합니다. 컨트롤이 클릭된 위치를 나타내며, 값은 그룹 번호(Section):행 번호(Row)입니다

페이지의 View 클릭 이벤트는 다음과 같은 여러 방법으로 속성을 더 설정하여 분석 가치를 확장할 수 있습니다:

3.5.1 컨트롤 요소 ID 설정​

페이지의 요소(View)에 요소 ID를 설정하여 의미가 다른 요소를 구분할 수 있습니다. 다음 방법으로 요소 ID를 설정할 수 있습니다.

//모든 APPID 인스턴스에 설정
self.table1.thinkingAnalyticsViewID = @"testtable1";

// 다중 APPID 인스턴스별로 개별 설정
self.table1.thinkingAnalyticsViewIDWithAppid = @{ @"app1" : @"testtableID2",
@"app2" : @"testtableID3" };

이때 table1의 클릭 이벤트에 시스템 속성 #element_id가 추가되며, 값은 여기서 전달한 값입니다

  • 관련 시스템 속성: #element_id, 문자열 타입이며 해당 요소의 커스텀 ID를 나타냅니다

3.5.2 컨트롤 클릭 이벤트의 속성 커스터마이즈​

대부분의 컨트롤은 thinkingAnalyticsViewProperties로 커스텀 속성을 바로 설정할 수 있습니다.

//모든 APPID 인스턴스에 설정
self.table1.thinkingAnalyticsViewProperties = @{@"key1":@"value1"};

// 다중 APPID 인스턴스별로 개별 설정
self.table1.thinkingAnalyticsViewPropertiesWithAppid = @{@"app1":@{@"tablekey":@"tablevalue"},
@"app2":@{@"tablekey2":@"tablevalue2"}
};

3.5.3 UITableView와 UICollectionView 컨트롤 클릭 이벤트의 속성​

UITableView와 UICollectionView는 Protocol <TDUIViewAutoTrackDelegate>를 구현하여 커스텀 속성을 설정해야 합니다.

1. 먼저 View Controller 클래스에서 Protocol <TDUIViewAutoTrackDelegate>를 구현합니다

2. 다음으로 클래스에서 델리게이트를 설정합니다. viewDidLoad 메서드에서 설정하는 것을 권장합니다

self.table1.thinkingAnalyticsDelegate = self;
  • table1은 커스텀 속성을 설정할 View로 바꿀 수 있습니다

3. 그런 다음 View Controller의 타입에 따라 메서드를 구현합니다

  • UITableView에서 구현해야 하는 메서드입니다
//모든 APPID 인스턴스에 설정: UITableView의 커스텀 속성 설정
-(NSDictionary *) thinkingAnalytics_tableView:(UITableView *)tableView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath
{
return @{@"testProperty":@"test"};
}

/** 다중 APPID 인스턴스별로 개별 설정
* -(NSDictionary *) thinkingAnalyticsWithAppid_tableView:(UITableView *)tableView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath {
* return @{@"app1":@{@"autoPro":@"tablevalue"},
* @"app2":@{@"autoPro2":@"tablevalue2"}
* };
* }
*/
  • UICollectionView에서 구현해야 하는 메서드입니다
//모든 APPID 인스턴스에 설정: UICollectionView의 커스텀 속성 설정
-(NSDictionary *) thinkingAnalytics_collectionView:(UICollectionView *)collectionView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath;
{
return @{@"testProperty":@"test"};
}

/** 다중 APPID 인스턴스별로 개별 설정
* - (NSDictionary *)thinkingAnalyticsWithAppid_collectionView:(UICollectionView *)collectionView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath {
* return @{@"app1":@{@"autoProCOLL":@"tablevalueCOLL"},
* @"app2":@{@"autoProCOLL2":@"tablevalueCOLL2"}
* };
* }
*/

4. 마지막으로 클래스의 viewWillDisappear 메서드에서 thinkingAnalyticsDelegate를 nil로 설정합니다

-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
self.table1.thinkingAnalyticsDelegate = nil;
}
  • table1은 커스텀 속성을 설정할 View로 바꿀 수 있으며, 델리게이트를 설정할 때와 같아야 합니다

3.6 APP 크래시 이벤트​

APP에서 처리되지 않은 예외가 발생하면 APP 크래시 이벤트가 전송됩니다

  • 이벤트 이름: ta_app_crash
  • 시스템 속성:
  • #app_crashed_reason, 문자 타입이며 크래시 발생 시의 스택 트레이스를 기록합니다

4. 자동 수집 이벤트 무시​

다음 방법으로 특정 페이지나 컨트롤의 자동 수집 이벤트를 무시할 수 있습니다

4.1 특정 페이지의 자동 수집 이벤트 무시​

특정 페이지(View Controller)에서 자동 수집 이벤트(페이지 조회 및 컨트롤 클릭 이벤트 포함)를 전송하지 않으려면 다음 방법으로 무시할 수 있습니다.

NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:@"IgnoredViewController"];

// 특정 페이지의 자동 수집 이벤트 무시
[TDAnalytics ignoreAutoTrackViewControllers:array];

4.2 특정 유형 컨트롤의 클릭 이벤트 무시​

특정 유형 컨트롤의 클릭 이벤트를 무시하려면 다음 방법을 사용할 수 있습니다

// 특정 타입의 모든 컨트롤 무시
[TDAnalytics ignoreViewType:[IgnoredClass class]];
  • IgnoredClass는 무시할 컨트롤 타입입니다

4.3 특정 요소(View)의 클릭 이벤트 무시​

특정 요소(View)의 클릭 이벤트를 무시하려면 다음 방법을 사용할 수 있습니다

// 모든 APPID 인스턴스에 설정
self.table1.thinkingAnalyticsIgnoreView = YES;

// 다중 APPID 인스턴스별로 개별 설정
// self.table2.thinkingAnalyticsIgnoreViewWithAppid = @{@"appid1" : @YES,@"appid2" : @NO};
  • table1은 무시할 View로 바꿀 수 있습니다

5. 자동 수집 이벤트의 시스템 속성​

다음 시스템 속성은 각 자동 수집 이벤트에만 있는 시스템 속성입니다

  • APP 시작 이벤트(ta_app_start)의 시스템 속성
속성 이름한국어 이름속성 타입설명

#resume_from_background

백그라운드에서 깨웠는지 여부

불리언

APP을 열었는지 백그라운드에서 깨웠는지를 나타냅니다. 값이 true이면 백그라운드에서 깨운 것이고, false이면 직접 연 것입니다

#start_reason

시작 사유

텍스트

APP 시작 사유를 나타내며, value는 문자열 타입입니다. 현재 deeplink, 푸시, 3dtouch 시작 사유 수집을 지원합니다.
#background_duration백그라운드 체류 시간숫자단위는 초
  • APP 종료 이벤트(ta_app_end)의 시스템 속성
속성 이름한국어 이름속성 타입설명
#duration이벤트 시간

숫자

이번 APP 방문(시작부터 종료까지)의 시간을 나타내며, 단위는 초입니다
  • APP 페이지 조회 이벤트(ta_app_view)의 시스템 속성
속성 이름한국어 이름속성 타입설명
#title

페이지 제목

텍스트

View Controller의 제목으로, controller.navigationItem.title 속성 값을 사용합니다
#screen_name페이지 이름텍스트View Controller의 클래스 이름
#url

페이지 주소

텍스트

현재 페이지의 주소이며, getScreenUrl을 호출하여 url을 설정해야 합니다
#referrer

이전 주소

텍스트이동 전 페이지의 주소이며, 이동 전 페이지에서 getScreenUrl을 호출하여 url을 설정해야 합니다
  • APP 컨트롤 클릭 이벤트(ta_app_click)의 시스템 속성
속성 이름한국어 이름속성 타입설명

#title

페이지 제목텍스트View Controller의 제목으로, controller.navigationItem.title 속성 값을 사용합니다
#screen_name페이지 이름텍스트View Controller의 클래스 이름

#element_id

요소 ID

텍스트

컨트롤의 ID로, thinkingAnalyticsViewID로 설정해야 합니다
#element_type요소 유형텍스트컨트롤의 유형
#element_selector요소 선택자텍스트컨트롤의 viewPath를 이어 붙인 값

#element_position

요소 위치

텍스트컨트롤의 위치 정보로, 컨트롤 타입이 UITableView 또는 UICollectionView인 경우에만 존재하며 컨트롤이 클릭된 위치를 나타냅니다. 값은 그룹 번호(Section):행 번호(Row)입니다
#element_content요소 내용텍스트컨트롤의 내용
  • APP 크래시 이벤트(ta_app_crash)의 시스템 속성
속성 이름한국어 이름속성 타입설명
#app_crashed_reason예외 정보텍스트문자 타입이며 크래시 발생 시의 스택 트레이스를 기록

6. 자동 수집 이벤트에 커스텀 속성 설정​

enableAutoTrack:properties:를 호출하여 자동 수집 기능을 활성화하면서 커스텀 속성을 설정할 수 있습니다

// 자동 수집 커스텀 속성
[TDAnalytics enableAutoTrack:TDAutoTrackEventTypeAll properties:@{@"auto_key1": @"auto_value1"}];

setAutoTrackProperties:properties:를 호출하여 커스텀 속성을 설정하거나 업데이트할 수도 있습니다

[TDAnalytics setAutoTrackProperties:TDAutoTrackEventTypeAll properties:@{@"auto_key2": @"auto_value2"}];

7. 자동 수집 이벤트 콜백​

v2.7.4 버전부터 자동 수집 이벤트 콜백을 지원합니다. enableAutoTrack:callback:을 호출하여 자동 수집 기능을 활성화할 수 있으며, callback에서 속성을 추가하고 업데이트할 수 있습니다.

[TDAnalytics enableAutoTrack:TDAutoTrackEventTypeAll callback:^NSDictionary * _Nonnull(TDAutoTrackEventType eventType, NSDictionary * _Nonnull properties) {
if (eventType == TDAutoTrackEventTypeAppStart) {
return @{@"addkey":@"addvalue"};
}
if (eventType == TDAutoTrackEventTypeAppEnd) {
return @{@"updatekey":@"updatevalue"};
}
return @{};
}];

이 콜백에서 시간이 오래 걸리는 작업을 하지 마십시오. 그렇지 않으면 데이터가 정상적으로 저장되지 않을 수 있습니다

이 문서가 도움이 되었나요?