자동 수집
1. 자동 수집 소개
AE 시스템은 데이터를 자동으로 수집하는 인터페이스를 제공하며, 비즈니스 요구에 따라 자동으로 수집할 데이터를 직접 선택할 수 있습니다.
현재 지원하는 자동 수집 데이터는 다음과 같습니다:
- APP 설치: APP이 설치된 것을 기록합니다
- APP 시작: APP을 여는 것과 백그라운드에서 깨우는 것을 포함합니다
- APP 종료: APP을 닫는 것과 백그라운드로 전환되는 것을 포함하며, 시작 후 사용 시간도 함께 수집합니다
- 유저가 APP에서 페이지(네이티브 페이지)를 조회합니다
- 유저가 APP에서 컨트롤을 클릭합니다
- 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 @{};
}];
이 콜백에서 시간이 오래 걸리는 작업을 하지 마십시오. 그렇지 않으면 데이터가 정상적으로 저장되지 않을 수 있습니다

