# 프리셋 속성
# 1. 모든 이벤트에 포함되는 프리셋 속성
다음 프리셋 속성들은 Android SDK 내에서 모든 이벤트(자동 수집 이벤트 포함)에 포함되는 프리셋 속성입니다.
속성 이름 | 이름 | 타입 | 수집 타이밍 | 설명 |
---|---|---|---|---|
#ip | IP 주소 | 문자열 | 서버 측에서 수집 | 유저의 IP 주소, TA는 유저의 지리적 위치 정보 |
#country | 국가 | 문자열 | 서버 측에서 수집 | 유저의 국가 또는 지역은, IP 주소에 기반하여 생성 |
#country_code | 국가 코드 | 문자열 | 서버 측에서 수집 | 유저가 위치한 국가 또는 지역의 국가별 지역 코드(ISO 3166-1 alpha-2, 즉 2개의 대문자 영문)는, IP 주소에 기반하여 생성 |
#province | 주 | 문자열 | 서버 측에서 수집 | 유저의 주, IP 주소에 기반하여 생성 |
#city | 도시 | 문자열 | 서버 측에서 수집 | 유저의 도시는, IP 주소에 기반하여 생성 |
#os_version | OS 버전 | 문자열 | 초기화 시 1회 수집 | iOS 11.2.2, Android 8.0.0 등 |
#manufacturer | 디바이스 제조사 | 문자열 | 초기화 시 1회 수집 | Apple 등의 유저 디바이스의 제조사 |
#os | 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 | 앱 버전 | 문자열 | 초기화 시 1회 수집 | 앱 버전 |
#bundle_id | 앱 패키지명(유니크) | 문자열 | 초기화 시 1회 수집 | 앱 패키지 이름 또는 프로세스 이름 |
#lib | SDK 타입 | 문자열 | 초기화 시 1회 수집 | SDK의 타입: Android, iOS 등 |
#lib_version | SDK 버전 | 문자열 | 초기화 시 1회 수집 | SDK의 버전 |
#network_type | 네트워크 타입 | 문자열 | 초기화 시 1회 수집하고, 네트워크 상태 변경 시 수집 | 데이터 전송 시 네트워크 상태: WIFI, 4G, 5G 등 |
#carrier | 통신사 | 문자열 | 초기화 시 1회 수집 | 유저 디바이스의 통신사: SK, KT, LG 등 |
#zone_offset | 시간대 | 숫자 | 이벤트 발생 시 수집 | 데이터 시간 UTC 시간과의 차이 시간 수 |
#install_time | 설치 시간 | 시간 | 초기화 시 1회 수집 | 앱의 설치 시간 |
#simulator | 시뮬레이터 | 숫자 | 초기화 시 1회 수집 | 디바이스가 시뮬레이터인지 true/false |
#ram | 디바이스의 ram 상태 | 문자열 | 이벤트 발생 시 수집 | 유저 디바이스의 현재 남은 ram과 총 ram, 단위는 GB, 예: 1.4/2.4 |
#disk | 디바이스의 스토리지 상태 | 문자열 | 이벤트 발생 시 수집 | 유저 디바이스의 현재 남은 스토리지와 총 스토리지, 단위는 GB 예: 30/200 |
#fps | 디바이스의 프레임레이트 | 숫자 | 이벤트 발생 시 수집 | 유저 디바이스의 현재 화면의 프레임레이트: 60 |
#system_language | 시스템 언어 | 문자열 | 초기화 시 1회 수집 | 유저 디바이스의 시스템 언어(ISO 639-1) 예: kr, en 등 |
# 2. 자동 수집 이벤트의 프리셋 속성
다음 프리셋 속성들은 자동 수집 이벤트에서 특유의 프리셋 속성입니다.
- 앱 시작 이벤트(ta_app_start)의 프리셋 속성
속성 이름 | 이름 | 타입 | 설명 |
---|---|---|---|
#resume_from_background | 백그라운드에서 재시작 여부 | 문자열 | APP의 시작이 직접 시작인지, 백그라운드에서 재시작인지. true는 백그라운드에서 재시작이고, false는 직접 시작입니다. |
#start_reason | 애플리케이션의 시작 원인 | 문자열 | JSON 문자열입니다. 앱이 URL 또는 Intent를 사용하여 열릴 경우, URL의 내용과 Intent의 데이터를 자동으로 기록합니다. 예: {url:"thinkingdata://", "data":{}} |
#background_duration | 백그라운드 체류 시간 | 숫자 | start 이벤트가 2회 발생한 간격 동안 앱이 백그라운드에 있던 시간, 단위: 초 |
속성 이름 | 이름 | 타입 | 설명 |
---|---|---|---|
#duration | 이벤트 시간 경과 | 숫자 | APP 시작부터 종료까지의 시간 경과, 단위는 초 |
속성 이름 | 이름 | 타입 | 설명 |
---|---|---|---|
#title | 페이지 제목 | 문자열 | view가 속한 Activity의 제목으로, Activity의 title 속성으로 값이 부여됩니다. |
#screen_name | 페이지 이름 | 문자열 | view가 속한 Activity의 패키지명, 카테고리명 |
#url | 페이지 URL | 문자열 | 현재 페이지의 URL, getScreenUrl을 호출하여 URL 설정이 필요합니다. |
#referrer | 리퍼러 | 문자열 | 이 페이지로 이동하기 전의 URL로, getScreenUrl을 호출하여 설정이 필요합니다. |
속성 이름 | 이름 | 타입 | 설명 |
---|---|---|---|
#title | 페이지 제목 | 문자열 | view가 속한 Activity의 제목으로, Activity의 title 속성으로 값이 부여됩니다. |
#screen_name | 페이지 명 | 문자열 | view가 속한 Activity의 패키지명, 카테고리명 |
#element_id | 이벤트 이름 ID | 문자열 | view의 ID, 기본적으로 android:id를 사용하며, setViewID를 호출하여 설정 가능합니다. |
#element_type | 요소 타입 | 문자열 | view의 타입 |
#element_selector | 요소 선택자 | 문자열 | view의 viewPath의 스플라이싱 |
#element_position | 요소 위치 | 문자열 | view의 위치 정보, view에 position 속성이 있을 때 전송됩니다. |
#element_content | 요소 내용 | 문자열 | view 위의 내용 |
속성 이름 | 이름 | 타입 | 설명 |
---|---|---|---|
#app_crashed_reason | 이상 정보 | 문자열 | 크래시 발생 시의 스택 트레이스가 기록됩니다. |
# 3. 기타 프리셋 속성
위에서 언급된 프리셋 속성 외에, 호출 후 기록되는 프리셋 속성:
속성 이름 | 이름 | 타입 | 설명 |
---|---|---|---|
#duration | 경과 시간 | 숫자 | timeEvent 함수를 호출하여, 이벤트의 경과 시간을 기록합니다. 단위는 초 |
#background_duration | 백그라운드 경과 시간 | 숫자 | timeEvent 함수를 호출하여, 이벤트의 경과 시간을 기록합니다. 단위는 초 |
# 4. 프리셋 속성 획득
v2.7.0 및 그 이후 버전에서는 getPresetProperties()
를 호출하여 프리셋 속성을 가져올 수 있습니다.
다음 방법으로 서버 트래킹은 앱 측의 일부 프리셋 속성을 가져와 서버 측으로 전송할 수 있습니다.
// 속성 객체 가져오기
TDPresetProperties presetProperties = instance.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.bundle_id; // 패키지 이름
String os = presetProperties.os; // OS 타입, 예: Android
String system_language = presetProperties.system_language; // 모바일 시스템 언어 타입
int screen_width = presetProperties.screen_width; // 화면 너비
int screen_height = presetProperties.screen_height; // 화면 높이
String device_model = presetProperties.device_model; // 디바이스 모델
String device_id = presetProperties.device_id; // 디바이스의 고유 식별자
String carrier = presetProperties.carrier; // SIM 카드 운영자 정보. 듀얼 카드 대기 모드에서 주 카드의 운영 정보를 가져와야 합니다.
String manufacture = presetProperties.manufacture; // 휴대폰 제조사, 예: Huawei
String network_type = presetProperties.network_type; // 네트워크 타입
String os_version = presetProperties.os_version; // 시스템 버전 번호
String app_version = presetProperties.app_version; // 앱 버전 번호
double zone_offset = presetProperties.zone_offset; // 타임존 오프셋 값
String ram = presetProperties.ram; // 저장소 사용량
String disk = presetProperties.disk; // 디스크 사용량
int fps = presetProperties.fps; // fps
String installTime = presetProperties.installTime; // 앱 설치 시간
boolean isSimulator = presetProperties.isSimulator; // 디바이스가 시뮬레이터인지 여부
IP, 국가, 도시 정보는 서버 측에서 분석하여 생성되며, 클라이언트에서의 호출이 제공되지 않습니다.
# 프리셋 속성 수집 금지
특정 경우에 프리셋 속성 수집을 금지하고 싶다면, 프로젝트 카테고리의 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>
Android ID 속성에 대해, TE 측에서는 코드 레벨에서 완전히 격리할 수 있습니다. 격리된 후에는 앱 내에서 속성을 가져오는 코드가 전혀 남지 않습니다. 자세한 내용은 자동 수집 가이드에서 확인하실 수 있습니다.