# iOS
::: 팁
구현하기 전에 데이터 액세스 준비를 확인해 주시기 바랍니다.
- iOS SDK 지원 시스템 버전은 iOS 9.0 이상이 필요합니다.
- iOS SDK (프레임워크 형식) 크기 약 6.3MB
:::
최신 버전: v3.0.0
업데이트 시간: 2023-10-10
소스 코드: 다운로드 (opens new window)
Beta: v3.0.1-beta.1 다운로드 (opens new window)
# 1. SDK 구현
# 1.1 자동 구현
- CocoaPods를 이용하여 SDK 구현
- Podfile을 생성 및 편집합니다 (기존 파일이 있으면 그대로 편집).
Podfile을 생성하고 프로젝트(.xcodeproj) 파일과 같은 디렉토리에서 다음 코드를 실행합니다.
pod init
Podfile 내용을 아래와 같이 편집합니다:
platform :ios, '9.0'
target 'YourProjectTarget' do
pod 'ThinkingSDK' #ThinkingSDK
end
- 프로젝트 루트 디렉토리에서 다음 명령을 실행하여 설치합니다.
pod install
성공적으로 설치되면, 터미널에 다음과 같은 메시지가 표시됩니다:
- 임포트가 성공하면 워크스페이스를 엽니다.
코드 실행 후 .xcworkspace
파일이 생성되면 iOS SDK
가 성공적으로 임포트된 것입니다. .xcworkspace
를 열어 주십시오 (주의: 이때 .xcodeproj
파일을 동시에 열 수 없습니다).
- Carthage를 사용하여 SDK 설치
- Cartfile 파일에서 아래의 설정을 추가합니다
github "ThinkingDataAnalytics/ios-sdk"
- carthage update --platform iOS를 실행하고, ThinkingSDK.framework를 프로젝트 내에 추가합니다
# 1.2 수동 구현
iOS SDK (opens new window)를 다운로드하고 압축을 풉니다
ThinkingSDK.framework
를 Xcode 프로젝트 워크스페이스로 이동합니다.Xcode에서 Targets를 찾은 후, Build Settings 메뉴의
Other linker flags
옵션에-ObjC
를 추가합니다.Xcode에서 Targets를 찾아 Build Phases 메뉴의 Link Binary With Libraries에 다음 의존 항목을 추가합니다:
libz.dylib
,Security.framework
,SystemConfiguration.framework
,libsqlite3.tbd
# 2. 초기 설정
# 파라미터 설명:
- APPID: 프로젝트의 APPID, TE 프로젝트 관리 화면에서 확인 가능
- SERVER_URL: 데이터 전송 URL
- SaaS의 경우 프로젝트 관리 → 구성 → 데이터 전송 주소에서 확인 가능
- 프라이빗 구축의 경우, 데이터 전송 주소를 지정할 수 있음
# 3. 주요 기능
주요 기능을 사용하기 전에, 유저 식별 규칙을 확인해 주세요.
SDK는 게스트 ID를 자동으로 생성하고, 로컬에 저장됩니다; 유저가 로그인하기 전에, 게스트 ID를 신분 식별 ID로 사용됩니다.
주의: 게스트 ID는 유저가 앱을 재설치할 때 리셋됩니다.
# 3.1 계정 ID 설정
유저가 로그인할 때 login
을 호출하여 유저의 계정 ID를 설정할 수 있습니다. TE 플랫폼은 로그아웃을 호출하기 전까지 계정 ID를 식별 ID로 보유합니다. 여러 번 login
을 호출하면 이전 계정 ID가 덮어쓰여집니다.
이 방법으로는 로그인 이벤트를 전송하지 않습니다.
# 3.2 공통 이벤트 속성 설정
공통 이벤트 속성은 모든 이벤트에 포함되는 속성입니다. setSuperProperties
를 호출하여 설정할 수 있습니다. 이벤트를 전송하기 전에 공통 이벤트 속성을 설정해 두십시오.
예: 플레이어의 레벨, 전투력, 보유 자원 등 속성
공통 이벤트 속성은 캐시에 저장되며, 앱을 시작할 때마다 호출할 필요는 없습니다. 그러나 호출하면 이전에 설정한 공통 이벤트 속성이 덮어쓰여집니다.
- 이벤트 속성은
NSDictionary
객체이며, 각 요소는 속성으로 나뉩니다. - Key는 해당 속성의 이름으로 string 타입이며, 영어 문자와 숫자, "_"를 포함할 수 있으며 최대 50자입니다. TE 시스템은 일관되게 소문자로 통일됩니다.
- Value는 해당 속성의 값으로, String, Number, Boolean, Time, object, array, list object를 지원합니다.
- Boolean 타입의 속성을 업로드하려면
@YES
와@NO
또는[NSNumber numberWithBool:YES]
와[NSNumber numberWithBool:NO]
로 값을 지정하십시오.@true
,@false
,@TRUE
및@FALSE
를 사용하지 마십시오.
이벤트 속성과 유저 속성은 공통 이벤트 속성과 일치해야 합니다.
# 3.3 자동 수집 이벤트 On/Off
클라이언트 SDK는 일부 이벤트를 자동으로 수집할 수 있으며, 실제 비즈니스 상황에 따라 On/Off를 설정할 수 있습니다. 자세한 내용은 자동 수집 가이드를 참조하십시오.
// enable autotrack event
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID]enableAutoTrack:ThinkingAnalyticsEventTypeAppInstall | ThinkingAnalyticsEventTypeAppStart |ThinkingAnalyticsEventTypeAppEnd];
# 3.4 이벤트 전송
track
을 호출하여 이벤트를 전송합니다. 사전에 데이터 계획을 준비한 후 전송하십시오. 아래는 모델 코드입니다. 예: 아이템 구매
이벤트 이름은 string 타입으로, 영어 문자와 숫자, "_"를 포함할 수 있으며, 최대 50자까지 입력 가능합니다.
# 3.5 유저 속성 설정
일반 유저 속성에 대해서는 user_set
을 사용하여 설정할 수 있으며, user_set
은 기존 값을 덮어씁니다. 해당 속성에 값이 없는 경우 속성이 새로 생성됩니다. 아래는 코드 예시입니다.
# 4. 코드 예시 (Example Code)
아래 코드 예시에는 모든 작업이 포함되어 있으며, 다음 순서대로 사용하는 것을 권장합니다.
ThinkingAnalyticsSDK *instance;
if (privacy policy is authorized) {
instance = ThinkingAnalyticsSDK.sharedInstance(this, TE_APP_ID, TE_SERVER_URL);
if(instance != null)
{
//if the user has logged in, the account ID of the user could be set as the unique identifier
instance.login("TE");//공통 이벤트 속성을 설정한 후, 각 이벤트는 공통 이벤트 속성을 가집니다
NSMutableDictionary *superProperties = [NSMutableDictionary new];
[superProperties setValue:@"te" forKey:@"channel"]; //문자열
[superProperties setValue:@1 forKey:@"age"]; //숫자
[superProperties setValue:@YES forKey:@"isSuccess"]; //불리언
[superProperties setValue:[NSDate now] forKey:@"birthday"]; //시간
[superProperties setValue:@{@"key":@"value"} forKey:@"object"]; //객체
[superProperties setValue:@[@{@"key":@"value"}] forKey:@"object_arr"]; //배열 객체
[superProperties setValue:@[@"value"] forKey:@"arr"]; //배열
[instance setSuperProperties:superProperties]; //공통 이벤트 속성 설정
//자동 추적 이벤트 활성화
[[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID]enableAutoTrack:ThinkingAnalyticsEventTypeAppInstall | ThinkingAnalyticsEventTypeAppStart |ThinkingAnalyticsEventTypeAppEnd];//이벤트 보내기
NSDictionary *eventProperties = @{ @"product_name": @"아이템 이름"};
[instance track:@"product_buy" properties:eventProperties];
//유저 속성 설정
[instance user_set:@{@"username": @"TE"}];
}
}