iOS
연동하기 전에 먼저 연동 전 준비를 읽어 주십시오.
iOS SDK의 최소 시스템 버전 요구 사항은 iOS 9.0입니다
iOS SDK(Framework 형식)의 크기는 약 2.7 MB입니다
최신 버전: v3.5.3
업데이트 시간: 2026-09-22
이 문서는 v3.0.0 이상 버전에 적용됩니다. 과거 버전은 iOS 연동 가이드(V2), SDK 다운로드(v2.8.4)를 참고하십시오
1. SDK 통합
1.1 자동 통합
- CocoaPods로 SDK 설치
1. Podfile을 생성하고 내용을 편집합니다(이미 있으면 바로 편집합니다).
Podfile 생성: 프로젝트(.xcodeproj) 파일과 같은 디렉터리에서 명령줄로 다음 명령을 실행합니다.
pod init
Podfile의 내용을 다음과 같이 편집합니다:
platform :ios, '9.0'
target 'YourProjectTarget' do
pod 'ThinkingSDK', '3.5.3'
end
2. 프로젝트 루트 디렉터리에서 설치 명령을 실행합니다
pod install
성공하면 터미널에 다음과 같은 메시지가 표시됩니다:
Analyzing dependencies
Downloading dependencies
Installing ThinkingDataCore
Installing ThinkingSDK
Generating Pods project
Integrating client project
Pod installation complete! There is 1 dependency from the Podfile and 2 total pods installed.
3. 가져오기가 완료되면 프로젝트를 시작합니다
명령이 성공적으로 실행되면 .xcworkspace 파일이 생성되며, 이는 iOS SDK를 성공적으로 가져왔음을 의미합니다. .xcworkspace 파일을 열어 프로젝트를 시작합니다(주의: 이때 .xcodeproj 파일을 동시에 열면 안 됩니다)
1.2 수동 통합
1. iOS SDK를 다운로드하고 압축을 해제합니다
2. ThinkingSDK.xcframework, ThinkingDataCore.xcframework를 XCode Project Workspace 프로젝트로 드래그합니다
3. Targets를 찾아 Build Settings 메뉴의 Other linker flags 옵션에 -ObjC를 추가합니다
4. Build Phases 탭으로 전환하고 Link Binary With Libraries 항목에 다음 의존 항목을 추가합니다.
libz.tbd、Security.framework、SystemConfiguration.framework、libsqlite3.tbd
2. 초기화
- Objective-C
- Swift
#import <ThinkingSDK/ThinkingSDK.h>
NSString *appid = @"APPID";
NSString *url = @"SERVER_URL";
//방법 1
[TDAnalytics startAnalyticsWithAppId:appid serverUrl:url];
//방법 2
TDConfig *config = [[TDConfig alloc] init];
config.appid = appid;
config.serverUrl = url;
[TDAnalytics startAnalyticsWithConfig:config];
// SDK needs to be initialized on the main thread
let appid = "APPID";
let url = "SERVER_URL";
//방법 1
TDAnalytics.start(withAppId: appid, serverUrl: url)
//방법 2
let config = TDConfig(appId: appid, serverUrl: url)
TDAnalytics.start(with: config)
파라미터 설명:
-
APPID: 프로젝트의 APPID로, AE 백엔드의 프로젝트 관리 페이지에서 확인할 수 있습니다 -
SERVER_URL: 데이터 전송 URL- 클라우드 서비스를 사용하는 경우 다음을 입력합니다: https://global-receiver-ta.thinkingdata.cn
- 프라이빗 배포 버전을 사용하는 경우 데이터 수집 주소에 도메인을 바인딩하고 HTTPS 인증서를 설정하십시오: https://데이터 수집 주소에 바인딩한 도메인
3. 자주 사용하는 기능
자주 사용하는 기능을 사용하기 전에 먼저 유저 식별 규칙을 이해하는 것을 권장합니다. SDK는 기본적으로 디바이스 ID_설치 횟수를 게스트 ID로 사용하고, 게스트 ID를 로컬에 영구 저장합니다. 유저가 로그인하기 전에는 게스트 ID가 신원 식별 ID로 사용됩니다. 참고: 게스트 ID는 유저가 앱을 재설치하거나 디바이스를 변경하면 바뀝니다.
3.1 계정 ID 설정
유저가 로그인할 때 login을 호출하여 유저의 계정 ID를 설정할 수 있습니다. AE 플랫폼은 계정 ID를 신원 식별 ID로 사용하며, 설정한 계정 ID는 logout을 호출하기 전까지 계속 유지됩니다. login을 여러 번 호출하면 이전 계정 ID를 덮어씁니다.
- Objective-C
- Swift
// 유저의 로그인 고유 식별자로, 전송 데이터의 #account_id에 해당합니다. 이때 #account_id 값은 TD입니다
[TDAnalytics login:@"TD"];
// 유저의 로그인 고유 식별자로, 전송 데이터의 #account_id에 해당합니다. 이때 #account_id 값은 TD입니다
TDAnalytics.login("TD")
이 메서드는 로그인 이벤트를 전송하지 않습니다
3.2 공통 이벤트 속성 설정
공통 이벤트 속성은 모든 이벤트에 포함되는 속성입니다. setSuperProperties를 호출하여 공통 이벤트 속성을 설정할 수 있으며, 이벤트를 보내기 전에 먼저 공통 이벤트 속성을 설정하는 것을 권장합니다. 유저의 회원 등급, 유입 채널 등 일부 중요한 속성은 모든 이벤트에 설정해야 하므로, 이러한 속성은 공통 이벤트 속성으로 설정할 수 있습니다.
- Objective-C
- Swift
NSDictionary *superProperties = @{
@"channel": @"ta",
@"age": @1,
@"isSuccess": @YES,
@"birthday": [NSDate date],
@"object": @{
@"key":@"value"
},
@"object_arr":@[
@{
@"key":@"value"
}
],
@"arr": @[@"value"],
};
[TDAnalytics setSuperProperties:superProperties];
var superProperties: [String : Any] = [:]
superProperties["channel"] = "ta"
superProperties["age"] = 1
superProperties["isSuccess"] = true
superProperties["birthday"] = Date()
superProperties["object"] = [
"key": "value"
]
superProperties["object_arr"] = [["key": "value"]]
superProperties["arr"] = ["value"]
TDAnalytics.setSuperProperties(superProperties)
공통 이벤트 속성은 캐시에 저장되므로 앱을 시작할 때마다 호출할 필요가 없습니다. setSuperProperties를 호출하여 이전에 이미 설정한 공통 이벤트 속성을 설정하면 이전 속성을 덮어씁니다.
- 이벤트 속성은
NSDictionary객체이며, 각 요소가 하나의 속성을 나타냅니다. - Key는 해당 속성의 이름으로 문자열 타입입니다. 영문자로 시작해야 하며 숫자, 영문자, 밑줄 "_"을 포함할 수 있고, 최대 길이는 50자입니다. 대소문자를 구분하지 않으며 AE에서 모두 소문자로 변환합니다
- Value는 해당 속성의 값으로 문자열, 숫자, 불리언, 시간, 객체, 객체 그룹, 배열을 지원합니다
- 불리언 타입 속성을 업로드하려면
@YES와@NO또는[NSNumber numberWithBool:YES]와[NSNumber numberWithBool:NO]로 값을 지정하십시오.@true,@false,@TRUE,@FALSE로 불리언 데이터를 지정하는 것은 허용되지 않습니다.
이벤트 속성과 유저 속성의 요구 사항은 공통 이벤트 속성과 같습니다
3.3 자동 수집 활성화
다음 코드 예시는 설치, 시작, 종료 이벤트를 활성화합니다. SDK의 자동 수집 기능을 자세히 알아보려면 자동 수집 이벤트를 참고하십시오
- Objective-C
- Swift
[TDAnalytics enableAutoTrack:TDAutoTrackEventTypeAppInstall | TDAutoTrackEventTypeAppStart | TDAutoTrackEventTypeAppEnd];
TDAnalytics.enableAutoTrack([.appStart, .appEnd, .appInstall])
3.4 이벤트 전송
track을 호출하여 이벤트를 업로드할 수 있습니다. 정리한 트래킹 문서에 따라 이벤트 속성과 전송 조건을 설정하는 것을 권장합니다. 여기서는 유저가 어떤 상품을 구매하는 경우를 예로 듭니다.
- Objective-C
- Swift
NSDictionary *eventProperties = @{@"product_name": @"book"};
[TDAnalytics track:@"product_buy" properties:eventProperties];
let properties = ["product_name": "book"] as [String: Any]
TDAnalytics.track("product_buy", properties: properties)
이벤트 이름은 문자열 타입이며, 영문자로 시작해야 하고 숫자, 영문자, 밑줄 "_"을 포함할 수 있으며, 최대 길이는 50자입니다.
3.5 유저 속성 설정
일반적인 유저 속성은 userSet을 호출하여 설정할 수 있습니다. 이 인터페이스로 업로드한 속성은 원래 속성 값을 덮어쓰며, 이전에 해당 유저 속성이 없었다면 새로 생성하고 타입은 전달된 속성의 타입과 같습니다. 여기서는 사용자 이름 설정을 예로 듭니다.
- Objective-C
- Swift
//이때 "username"은 "ThinkingData"입니다
[TDAnalytics userSet:@{@"username": @"ThinkingData"}];
//이때 "username"은 "TA"입니다
[TDAnalytics userSet:@{@"username": @"TA"}];
//이때 "username"은 "ThinkingData"입니다
TDAnalytics.userSet(["username": "ThinkingData"])
//이때 "username"은 "TA"입니다
TDAnalytics.userSet(["username": "TA"])
4. 모범 사례
다음 예시 코드에는 위의 모든 작업이 포함되어 있으며, 다음 단계에 따라 사용하는 것을 권장합니다.
- Objective-C
- Swift
if (개인정보 처리방침 동의) {
//SDK 초기화
NSString *appid = @"APPID";
NSString *url = @"SERVER_URL";
TDConfig *config = [[TDConfig alloc] init];
config.appid = appid;
config.serverUrl = url;
[TDAnalytics startAnalyticsWithConfig:config];
//자동 수집 활성화
[TDAnalytics enableAutoTrack:TDAutoTrackEventTypeAppInstall | TDAutoTrackEventTypeAppStart | TDAutoTrackEventTypeAppEnd];
[TDAnalytics login:@"TD"];
NSDictionary *superProperties = @{
@"channel": @"ta",
@"age": @1,
@"isSuccess": @YES,
@"birthday": [NSDate date],
@"object": @{
@"key":@"value"
},
@"object_arr":@[
@{
@"key":@"value"
}
],
@"arr": @[@"value"],
};
[TDAnalytics setSuperProperties:superProperties];
NSDictionary *eventProperties = @{@"product_name": @"book"};
[TDAnalytics track:@"product_buy" properties:eventProperties];
[TDAnalytics userSet:@{@"username": @"ThinkingData"}];
}
if (개인정보 처리방침 동의) {
//SDK 초기화
let appid = "app_id";
let url = "server_url";
let config = TDConfig(appId: appid, serverUrl: url)
TDAnalytics.start(with: config)
//자동 수집 활성화
TDAnalytics.enableAutoTrack([.appStart, .appEnd, .appInstall])
TDAnalytics.login("TD")
var superProperties: [String : Any] = [:]
superProperties["channel"] = "ta"
superProperties["age"] = 1
superProperties["isSuccess"] = true
superProperties["birthday"] = Date()
superProperties["object"] = [
"key": "value"
]
superProperties["object_arr"] = [["key": "value"]]
superProperties["arr"] = ["value"]
TDAnalytics.setSuperProperties(superProperties)
let eventProperties : [String: Any] = ["product_name": "book"]
TDAnalytics.track("test", properties: eventProperties)
TDAnalytics.userSet(["level": "1"])
}

