시스템 속성
1. 모든 이벤트에 포함되는 시스템 속성
다음 시스템 속성은 Android SDK의 모든 이벤트(자동 수집 이벤트 포함)에 포함되는 시스템 속성입니다
| 속성 이름 | 한국어 이름 | 속성 타입 | 수집 시점 | 설명 |
|---|---|---|---|---|
#ip | IP 주소 | 텍스트 | 서버 측 수집 | 유저의 IP 주소로, AE는 이를 기반으로 유저의 지리적 위치 정보를 가져옵니다 |
| #country | 국가 | 텍스트 | 서버 측 수집 | 유저가 있는 국가로, IP 주소를 기반으로 생성됩니다 |
#country_code | 국가 코드 | 텍스트 | 서버 측 수집 | 유저가 있는 국가의 국가 코드(ISO 3166-1 alpha-2, 즉 영문 대문자 2자리)로, IP 주소를 기반으로 생성됩니다 |
| #province | 성(Province) | 텍스트 | 서버 측 수집 | 유저가 있는 성/주로, IP 주소를 기반으로 생성됩니다 |
| #city | 도시 | 텍스트 | 서버 측 수집 | 유저가 있는 도시로, IP 주소를 기반으로 생성됩니다 |
| #os_version | OS 버전 | 텍스트 | 초기화 시 1회 수집 | iOS 11.2.2, Android 8.0.0 등 |
#manufacturer | 디바이스 제조사 | 텍스트 | 초기화 시 1회 수집 | 유저 디바이스의 제조사(예: Apple, vivo 등) |
| #os | 운영 체제 | 텍스트 | 초기화 시 1회 수집 | 예: Android, iOS 등 |
| #device_id | 디바이스 ID | 텍스트 | 초기화 시 1회 수집 | 유저의 디바이스 ID. iOS는 유저의 IDFV 또는 UUID, Android는 androidID를 사용 |
| #screen_height | 화면 높이 | 숫자 | 초기화 시 1회 수집 | 유저 디바이스의 화면 높이(예: 1920 등) |
| #screen_width | 화면 너비 | 숫자 | 초기화 시 1회 수집 | 유저 디바이스의 화면 너비(예: 1080 등) |
| #device_model | 디바이스 모델 | 텍스트 | 초기화 시 1회 수집 | 유저 디바이스의 모델(예: iPhone 8 등) |
| #device_type | 디바이스 타입 | 텍스트 | 초기화 시 1회 수집 | 디바이스 타입(예: "Tablet", "Phone") |
| #app_version | APP 버전 | 텍스트 | 초기화 시 1회 수집 | APP의 버전 |
| #bundle_id | 앱 고유 식별자 | 텍스트 | 초기화 시 1회 수집 | 앱 패키지명 또는 프로세스명 |
#lib | SDK 타입 | 텍스트 | 초기화 시 1회 수집 | 연동한 SDK의 타입(예: Android, iOS 등) |
| #lib_version | SDK 버전 | 텍스트 | 초기화 시 1회 수집 | 연동한 SDK의 버전 |
| #network_type | 네트워크 상태 | 텍스트 | 초기화 시 1회 수집, 네트워크 상태 변경 시 수집 | 이벤트를 업로드할 때의 네트워크 상태(예: WIFI, 3G, 4G 등) |
#carrier | 네트워크 통신사 | 텍스트 | 초기화 시 1회 수집 | 유저 디바이스의 네트워크 통신사(예: China Mobile, China Telecom 등) |
#zone_offset | 시간대 오프셋 | 숫자 | 이벤트 발생 시 수집 | 데이터 시간과 UTC 시간의 차이(시간 단위) |
| #install_time | 앱 설치 시간 | 시간 | 초기화 시 1회 수집 | 유저가 앱을 설치한 시간으로, 값은 시스템에서 가져옵니다 |
| #simulator | 에뮬레이터 여부 | 불리언 | 초기화 시 1회 수집 | 디바이스가 에뮬레이터인지 여부 true/false |
#ram | 디바이스 메모리 상태 | 텍스트 | 이벤트 발생 시 수집 | 유저 디바이스의 현재 남은 메모리와 전체 메모리, 단위 GB, 예: 1.4/2.4(3.2.0 이상 버전에서는 기본적으로 수집하지 않음) |
#disk | 디바이스 저장 공간 상태 | 텍스트 | 이벤트 발생 시 수집 | 유저 디바이스의 현재 남은 저장 공간과 전체 저장 공간, 단위 GB, 예: 30/200(3.2.0 이상 버전에서는 기본적으로 수집하지 않음) |
#fps | 디바이스 프레임 레이트 | 숫자 | 이벤트 발생 시 수집 | 유저 디바이스의 현재 초당 프레임 수, 예: 60(3.2.0 이상 버전에서는 기본적으로 수집하지 않음) |
#system_language | 시스템 언어 | 텍스트 | 초기화 시 1회 수집 | 유저 디바이스의 시스템 언어(ISO 639-1, 즉 영문 소문자 2자리), 예: zh, en 등 |
2. 자동 수집 이벤트의 시스템 속성
다음 시스템 속성은 각 자동 수집 이벤트에만 있는 시스템 속성입니다
- APP 시작 이벤트(ta_app_start)의 시스템 속성
| 속성 이름 | 한국어 이름 | 속성 타입 | 설명 |
|---|---|---|---|
#resume_from_background | 백그라운드에서 깨웠는지 여부 | 불리언 | APP을 열었는지 백그라운드에서 깨웠는지를 나타냅니다. 값이 true이면 백그라운드에서 깨운 것이고, false이면 직접 연 것입니다 |
| #start_reason | 앱 시작 출처 | 텍스트 | 내용은 JSON 문자열입니다. 앱을 url 또는 intent 방식으로 열면 url 내용과 intent의 data 데이터를 자동으로 기록합니다. 예시:{url:"thinkingdata://","data":{}} |
#background_duration | 백그라운드 체류 시간 | 숫자 | 두 번의 start 이벤트 사이에 앱이 백그라운드에 있었던 시간을 기록합니다. 단위: 초 |
- APP 종료 이벤트(ta_app_end)의 시스템 속성
| 속성 이름 | 한국어 이름 | 속성 타입 | 설명 |
|---|---|---|---|
| #duration | 이벤트 시간 | 숫자 | 이번 APP 방문(시작부터 종료까지)의 시간을 나타내며, 단위는 초입니다 |
- APP 페이지 조회 이벤트(ta_app_view)의 시스템 속성
| 속성 이름 | 한국어 이름 | 속성 타입 | 설명 |
|---|---|---|---|
| #title | 페이지 제목 | 텍스트 | 컨트롤이 속한 Activity의 제목으로, title 속성의 값을 사용합니다 |
| #screen_name | 페이지 이름 | 텍스트 | 컨트롤이 속한 Activity의 패키지명.클래스명 |
| #url | 페이지 주소 | 텍스트 | 현재 페이지의 주소로, getScreenUrl을 호출하여 url을 설정해야 합니다 |
| #referrer | 이전 주소 | 텍스트 | 이동 전 페이지의 주소로, 이동 전 페이지에서 getScreenUrl을 호출하여 url을 설정해야 합니다 |
- APP 컨트롤 클릭 이벤트(ta_app_click)의 시스템 속성
| 속성 이름 | 한국어 이름 | 속성 타입 | 설명 |
|---|---|---|---|
| #title | 페이지 제목 | 텍스트 | 컨트롤이 속한 Activity의 제목으로, Activity의 title 속성 값을 사용합니다 |
| #screen_name | 페이지 이름 | 텍스트 | 컨트롤이 속한 Activity의 패키지명.클래스명 |
| #element_id | 요소 ID | 텍스트 | 컨트롤의 ID로, 기본적으로 android:id를 사용하며 setViewID를 호출하여 설정할 수 있습니다 |
| #element_type | 요소 유형 | 텍스트 | 컨트롤의 유형 |
| #element_selector | 요소 선택자 | 텍스트 | 컨트롤 viewPath를 이어 붙인 값 |
| #element_position | 요소 위치 | 텍스트 | 컨트롤의 위치 정보로, 컨트롤에 position 속성이 있을 때만 업로드됩니다 |
| #element_content | 요소 내용 | 텍스트 | 컨트롤의 내용 |
- APP 크래시 이벤트(ta_app_crash)의 시스템 속성
| 속성 이름 | 한국어 이름 | 속성 타입 | 설명 |
|---|---|---|---|
| #app_crashed_reason | 예외 정보 | 텍스트 | 문자 타입이며 크래시 발생 시의 스택 트레이스를 기록 |
3. 기타 시스템 속성
위에서 언급한 시스템 속성 외에도 일부 시스템 속성은 해당 인터페이스를 호출해야 기록됩니다.
| 속성 이름 | 한국어 이름 | 속성 타입 | 설명 |
|---|---|---|---|
#duration | 이벤트 시간 | 숫자 | 타이머 기능 timeEvent를 호출해야 하며, 이벤트 소요 시간을 기록합니다. 단위는 초입니다 |
#background_duration | 백그라운드 체류 시간 | 숫자 | 타이머 기능 timeEvent를 호출해야 하며, 이벤트 발생 구간 동안 앱이 백그라운드에 있었던 시간을 기록합니다. 단위는 초입니다 |
4. 시스템 속성 가져오기
v2.7.0 이상 버전에서는 getPresetProperties() 메서드를 호출하여 시스템 속성을 가져올 수 있습니다.
서버 측 트래킹에 App 측의 일부 시스템 속성이 필요한 경우 이 메서드로 App 측의 시스템 속성을 가져와 서버 측에 전달할 수 있습니다.
- Java
- Kotlin
//속성 객체 가져오기
TDPresetProperties presetProperties = TDAnalytics.getPresetProperties();
//이벤트 시스템 속성 생성
JSONObject properties = presetProperties.toEventPresetProperties();
/*
{
"#carrier": "T-Mobile",
"#os": "Android",
"#device_id": "dd4a508df0dbff08",
"#screen_height": 2560,
"#bundle_id": "cn.thinkingdata.android.demo",
"#device_model": "sdk_gphone64_arm64",
"#screen_width": 1440,
"#system_language": "en",
"#install_time": "2022-08-19 17:31:52.398",
"#simulator": true,
"#manufacturer": "Google",
"#os_version": "12",
"#app_version": "1.0",
"#network_type": "3G",
"#zone_offset": 8,
"#ram": "0.8\/1.9",
"#disk": "0.1\/0.8",
"#fps": 60
}
*/
//특정 시스템 속성 가져오기
String bundle_id = presetProperties.bundleId;//패키지명
String os = presetProperties.os;//os 타입(예: Android)
String system_language = presetProperties.systemLanguage;//휴대폰 시스템 언어 타입
int screen_width = presetProperties.screenWidth;//화면 너비
int screen_height = presetProperties.screenHeight;//화면 높이
String device_model = presetProperties.deviceModel;//디바이스 모델
String device_id = presetProperties.deviceId;//디바이스 고유 식별자
String carrier = presetProperties.carrier;//휴대폰 SIM 카드 통신사 정보(듀얼 SIM인 경우 기본 SIM의 통신사 정보를 가져옴)
String manufacture = presetProperties.manufacture;//휴대폰 제조사(예: HuaWei)
String network_type = presetProperties.networkType;//네트워크 타입
String os_version = presetProperties.osVersion;//시스템 버전 번호
String app_version = presetProperties.appVersion;//app 버전 번호
double zone_offset = presetProperties.zoneOffset;//시간대 오프셋 값
String ram = presetProperties.ram;//메모리 사용량
String disk = presetProperties.disk;//디스크 사용량
int fps = presetProperties.fps;//fps
String installTime = presetProperties.installTime;//앱 설치 시간
boolean isSimulator = presetProperties.isSimulator;//디바이스가 에뮬레이터인지 여부
//속성 객체 가져오기
val presetProperties = TDAnalytics.getPresetProperties()
//이벤트 시스템 속성 생성
val properties = presetProperties.toEventPresetProperties()
/*
{
"#carrier": "T-Mobile",
"#os": "Android",
"#device_id": "dd4a508df0dbff08",
"#screen_height": 2560,
"#bundle_id": "cn.thinkingdata.android.demo",
"#device_model": "sdk_gphone64_arm64",
"#screen_width": 1440,
"#system_language": "en",
"#install_time": "2022-08-19 17:31:52.398",
"#simulator": true,
"#manufacturer": "Google",
"#os_version": "12",
"#app_version": "1.0",
"#network_type": "3G",
"#zone_offset": 8,
"#ram": "0.8\/1.9",
"#disk": "0.1\/0.8",
"#fps": 60
}
*/
//특정 시스템 속성 가져오기
val bundle_id: String = presetProperties.bundleId //패키지명
val os = presetProperties.os //os 타입(예: Android)
val system_language: String = presetProperties.systemLanguage //휴대폰 시스템 언어 타입
val screen_width: Int = presetProperties.screenWidth //화면 너비
val screen_height: Int = presetProperties.screenHeight //화면 높이
val device_model: String = presetProperties.deviceModel //디바이스 모델
val device_id: String = presetProperties.deviceId //디바이스 고유 식별자
val carrier = presetProperties.carrier //휴대폰 SIM 카드 통신사 정보(듀얼 SIM인 경우 기본 SIM의 통신사 정보를 가져옴)
val manufacture = presetProperties.manufacture //휴대폰 제조사(예: HuaWei)
val network_type: String = presetProperties.networkType //네트워크 타입
val os_version: String = presetProperties.osVersion //시스템 버전 번호
val app_version: String = presetProperties.appVersion //app 버전 번호
val zone_offset: Double = presetProperties.zoneOffset //시간대 오프셋 값
val ram = presetProperties.ram //메모리 사용량
val disk = presetProperties.disk //디스크 사용량
val fps = presetProperties.fps //fps
val installTime = presetProperties.installTime //앱 설치 시간
val isSimulator = presetProperties.isSimulator //디바이스가 에뮬레이터인지 여부
IP, 국가, 도시 정보는 서버 측에서 해석하여 생성하며, 클라이언트에서는 이러한 속성을 가져오는 인터페이스를 제공하지 않습니다
5. 시스템 속성 수집 비활성화
일부 시나리오에서는 규정 준수, 실제 비즈니스 요구 등을 고려하여 특정 시스템 속성의 수집을 금지해야 할 수 있습니다. 프로젝트 디렉터리의 res/values 디렉터리에 ta_public_config.xml 파일을 추가하여 수집을 비활성화할 속성 배열을 설정할 수 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- ThinkingAnalytics DisablePresetProperties start -->
<string-array name="TDDisPresetProperties">
<!-- <item>#disk</item>-->
<!-- <item>#fps</item>-->
<!-- <item>#ram</item>-->
<!-- <item>#app_version</item>-->
<!-- <item>#os_version</item>-->
<!-- <item>#manufacturer</item>-->
<!-- <item>#device_model</item>-->
<!-- <item>#screen_height</item>-->
<!-- <item>#screen_width</item>-->
<!-- <item>#carrier</item>-->
<!-- <item>#device_id</item>-->
<!-- <item>#system_language</item>-->
<!-- <item>#lib</item>-->
<!-- <item>#lib_version</item>-->
<!-- <item>#os</item>-->
<!-- <item>#bundle_id</item>-->
<!-- <item>#install_time</item>-->
<!-- <item>#start_reason</item>-->
<!-- <item>#simulator</item>-->
<!-- <item>#network_type</item>-->
<!-- <item>#zone_offset</item>-->
<!-- <item>#start_reason</item>-->
<!-- <item>#resume_from_background</item>-->
<!-- <item>#title</item>-->
<!-- <item>#screen_name</item>-->
<!-- <item>#url</item>-->
<!-- <item>#referrer</item>-->
<!-- <item>#element_type</item>-->
<!-- <item>#element_id</item>-->
<!-- <item>#element_position</item>-->
<!-- <item>#element_content</item>-->
<!-- <item>#element_selector</item>-->
<!-- <item>#app_crashed_reason</item>-->
<!-- <item>#background_duration</item>-->
<!-- <item>#duration</item>-->
</string-array>
<!-- ThinkingAnalytics DisablePresetProperties end -->
</resources>
디바이스 ID 수집을 차단한 상태에서 최초 이벤트를 사용해야 하는 경우 반드시 first_check_id 속성을 입력하십시오
Android ID 속성은 코드 수준의 완전한 격리를 지원합니다. 즉, 격리 후에는 앱에 해당 속성을 가져오는 관련 코드가 더 이상 포함되지 않습니다. 자세한 내용은 자동 수집 플러그인 설정 섹션을 참고하십시오

