# Unity
# Unity
TIP
구현하기 전에 데이터 액세스 준비를 확인해 주세요.
Unity SDK 지원 플랫폼: iOS, Android, Unity Editor, Windows, Mac, WebGL, Switch, Wechat 등의 미니 앱 플랫폼
Unity 5.4.0 이상 버전 지원, 크기는 약 320 KB입니다.
Latest version: v3.0.1
Update time: November 23, 2023
Resource download: SDK (opens new window), Source Code (opens new window)
Notice
The current documentation applies to v3.0.0 and later versions. For historical versions, please refer to the Data Ingestion Guide - Unity (V2) (opens new window), SDK Download (v2.6.1) (opens new window).
# SDK 구현
# 1.1 수동 통합
- Unity SDK (opens new window)를 다운로드
- ta_unity_sdk.unitypackage를 클릭하거나 Assets > Import Package > Custom Package에서 ta_unity_sdk.unitypackage를 업로드
# 1.2 Package Manager 구현
v2.4.1 이후로는 Package Manager를 사용하여 SDK 구현을 지원하게 되었습니다.
- Window - Package Manager 메뉴를 열기
- -를 클릭하고, Add package from git URL...를 선택
- https://github.com/ThinkingDataAnalytics/unity-sdk.git를 입력하고, Add를 클릭하면, 로딩 완료를 기다림
# 초기 설정
SDK를 수동으로 초기화하는 것을 권장합니다. 또한 자동으로 초기화하는 방법도 제공하고 있습니다.
# 2.1 수동으로 초기화
#
//Initialize SDK
//Method 1
TDAnalytics.Init("APPID","SERVER");
//Method 2
TDConfig config = new TDConfig("APPID","SERVER");
TDAnalytics.Init(config);
#
# 2.2 자동으로 초기화
TDAnalytics
의 프리팹을 추가하고, SDK 설정을 합니다.
위 그림의 설정은 다음과 같습니다:
설정
- Start Manually: 수동 초기화를 활성화할지 여부
- 활성화하면, 수동으로
TDAnalytics.Init()
호출을 설정하여 SDK의 초기화를 진행합니다. - 활성화하지 않으면, ThinkingAnalytics에서 프리팹을 로딩할 때 자동으로 SDK 초기화를 진행합니다.
- 활성화하면, 수동으로
- Enable Log: 로그를 활성화할지 여부.
- 활성화하면, 전송 상황을 출력하여 디버깅을 용이하게 합니다. 또한, 이벤트가 제대로 전송되었는지 여부는 Editor 모드에서도 확인할 수 있습니다. 조건을 충족하지 않는 속성에 대해서는, warning 로그로 콘솔에 표시됩니다.
Tokens토큰 별로 인스턴스를 식별합니다. 여러 프로젝트에 데이터를 전송해야 하는 경우, 오른쪽 하단의 '+'를 클릭하여 프로젝트 구성을 추가하고, 다른 APP ID로 여러 토큰 구성을 설정할 수 있습니다.
- APPID: 프로젝트의 APPID, TE 프로젝트 관리 화면에서 얻을 수 있습니다.
- SERVER_URL: 데이터 전송 URL
- SaaS의 경우 프로젝트 관리 → 데이터 액세스 URL에서 확인하십시오.
- 프라이빗 구축의 경우, 데이터 전송 URL을 지정할 수 있습니다.
- MODE: SDK 인스턴스 실행 모드, 프로덕션 환경에서는 반드시 NORMAL 모드를 사용하십시오.
참고: 일부 장치에서는 기본적으로 평문 전송이 금지되어 있으므로, HTTPS 형식의 수신 주소를 사용하는 것이 좋습니다.
# 주요 기능
주요 기능을 사용하기 전에, 사용자 식별 규칙을 확인하십시오.
SDK는 게스트 ID를 자동으로 생성하고 로컬에 저장합니다. 사용자가 로그인하기 전에, 게스트 ID를 신원 식별 ID로 사용합니다.
주의: 게스트 ID는 사용자가 앱을 재설치할 때 리셋됩니다.
# 3.1 계정 ID 설정
사용자가 로그인할 때, login을 호출하여 사용자의 계정 ID를 설정할 수 있습니다. TE 플랫폼은 계정 ID를 신원 식별 ID로 logout을 호출하기 전까지 유지합니다. login을 여러 번 호출하면 이전의 계정 ID가 덮어씌워집니다.
// The login unique identifier of the user, corresponding to the #account_id in data tracking. #Account_id now is TE
TDAnalytics.Login("TE");
이 방법으로는 로그인 이벤트가 전송되지 않습니다.
# 3.2 퍼블릭 이벤트 속성 설정
퍼블릭 이벤트 속성은 모든 이벤트에 포함되는 속성입니다. setSuperProperties를 호출하여 설정할 수 있습니다. 이벤트를 전송하기 전에, 퍼블릭 이벤트 속성을 설정해 주세요.
예를 들어: 플레이어의 레벨, 전투력, 보유 자원 등의 속성
Dictionary<string, object> superProperties = new Dictionary<string, object>();
superProperties["channel"] = "te";//string
superProperties["age"] = 1;//number
superProperties["isSuccess"] = true;//boolean
superProperties["birthday"] = DateTime.Now;//time
superProperties["object"] = new Dictionary<string, object>(){{ "key", "value"}};//object
superProperties["object_arr"] = new List<object>() {new Dictionary<string, object>(){{ "key", "value" }}};//object array
superProperties["arr"] = new List<object>() { "value" };//array
TDAnalytics.SetSuperProperties(superProperties);//set super properties
퍼블릭 이벤트 속성은 캐시에 저장되며, 앱을 시작할 때마다 호출할 필요는 없습니다. 만약 호출한다면 setSuperProperties: 이전에 설정한 퍼블릭 이벤트 속성은 덮어씌워집니다.
- 이벤트 속성은 Dictionary<string, object> 유형의 경우, 각 요소가 속성으로 분리됩니다
- Key는 해당 속성의 이름으로 string 유형이며, 영문자와 숫자, "_"를 포함하며, 최대 50 문자입니다. TE 시스템은 일괄적으로 소문자로 통일됩니다
- Value는 해당 속성의 값으로, String, Number, Bloon, Time, object, array, list object를 지원합니다.
이벤트 속성, 사용자 속성은 퍼블릭 이벤트 속성과 일치해야 합니다.
# 3.3 자동 수집 이벤트의 On/Off
클라이언트 SDK는 일부 이벤트를 자동으로 수집할 수 있으며, 실제 업무 상황에 따라 on/off를 설정하십시오. 아래는 참고 사항입니다.
//enable auto-tracking events
TDAnalytics.EnableAutoTrack(TDAutoTrackEventType.AppInstall | TDAutoTrackEventType.AppStart | TDAutoTrackEventType.AppEnd);
#
# 3.4 이벤트 전송
track을 호출하여 이벤트 전송을 수행합니다. 사전에 데이터 플랜을 준비하고 전송하십시오. 아래는 모델 코드입니다. 예: 아이템 구매
Dictionary<string, object> properties = new Dictionary<string, object>(){{"product_name", "商品名"}};
TDAnalytics.Track("product_buy", properties);
이벤트 이름은 string 유형이며, 영문자와 숫자, "_"를 포함하며, 최대 50 문자까지 입력 가능합니다.
# 3.5 사용자 속성 설정
일반적인 유저 속성에 대해서는, UserSet을 사용하여 설정할 수 있지만, UserSet은 원래의 값을 덮어씁니다. 원래 해당 속성에 값이 없는 경우, 속성이 새로 생성됩니다. 아래는 코드 예시입니다.
//the username now is TA
TDAnalytics.UserSet(new Dictionary<string, object>(){{"user_name", "TA"}});
//the username now is TE
TDAnalytics.UserSet(new Dictionary<string, object>(){{"user_name", "TE"}});
#
# 코드 예시 요약
아래의 코드 예시에는 모든 작업이 포함되어 있으며, 아래의 순서로 사용하는 것을 권장합니다:
if (privacy policy is authorized)
{
//Initialize SDK
TDAnalytics.Init("APPID", "SERVER");
//if the user has logged in, the account ID of the user could be set as the unique identifier
TDAnalytics.Login("TE");
//After setting super properties, each event would have super properties
Dictionary<string, object> superProperties = new Dictionary<string, object>();
superProperties["channel"] = "te";//string
superProperties["age"] = 1;//number
superProperties["isSuccess"] = true;//boolean
superProperties["birthday"] = DateTime.Now;//time
superProperties["object"] = new Dictionary<string, object>(){{ "key", "value"}};//object
superProperties["object_arr"] = new List<object>() {new Dictionary<string, object>(){{ "key", "value" }}};//object array
superProperties["arr"] = new List<object>() { "value" };//array
TDAnalytics.SetSuperProperties(superProperties);//set super properties
//Enable auto-tracking
TDAnalytics.EnableAutoTrack(TDAutoTrackEventType.AppInstall | TDAutoTrackEventType.AppStart | TDAutoTrackEventType.AppEnd);
//Upload events
Dictionary<string, object> properties = new Dictionary<string, object>(){{"product_name", "商品名")}};
TDAnalytics.Track("product_buy", properties);
//Set user properties
TDAnalytics.UserSet(new Dictionary<string, object>(){{"user_name", "TA"}});
}