-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathindex.mdoc
431 lines (332 loc) · 17 KB
/
index.mdoc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
---
title: iOS SDK 연동 가이드
description: iOS SDK를 사용해 iOS 앱의 Adjust 기능에 액세스
category-title: iOS SDK
slug: ko/sdk/ios
sidebar-position: 2
versions:
- label: v5
value: v5
default: true
- label: v4
value: v4
redirects:
v4: /ko/sdk/ios/v4
---
Adjust iOS SDK를 사용하면 iOS 앱에서 어트리뷰션, 이벤트 등을 기록할 수 있습니다. 이 가이드에서는 Adjust SDK를 앱과 연동하는 방법이 다루어집니다.
{% callout type="important" %}
Adjust SDK는 iOS 12 이상 버전을 지원합니다.
{% /callout %}
1. 프로젝트에 SDK 추가 {% #add-the-sdk-to-your-project %}
---
iOS 앱에서 Adjust SDK를 사용하려면 우선 Xcode 프로젝트에 Adjust SDK를 추가해야 합니다.
Swift 패키지 매니저를 사용하여 SDK를 추가하는 경우:
1. **File --> Swift Packages --> Add Package Dependency** 를 선택합니다.
1. 나타나는 창에 SDK의 GitHub 주소를 입력합니다. `https://github.com/adjust/ios_sdk`
1. **버전** 드롭다운 메뉴에서 사용을 원하는 Adjust SDK 버전을 선택합니다. 최신 버전은 [배포 페이지](https://github.com/adjust/ios_sdk/releases)에서 확인하실 수 있습니다.
### 대체 설치 메서드 {% #alternative-installation-methods %}
{% tabs %}
{% tab title="Cocoapods" sync="cocoapods" %}
Cocoapods를 사용하여 SDK를 추가하려면 `Podfile`에서 사용하고자 하는 버전을 명시합니다.
```rb
# Get pod from repository
pod 'Adjust', '~> {% $versions.ios.v5 %}'
```
앱에서 웹뷰를 사용하는 경우 다음을 추가하여 Adjust Web Bridge를 추가해야 합니다:
```rb
pod 'Adjust/AdjustWebBridge', '~> {% $versions.ios.v5 %}'
```
{% /tab %}
{% tab title="Carthage" sync="carthage" %}
Carthage를 사용하여 SDK를 추가하려면 `Cartfile`에 다음을 추가합니다.
```text
github "adjust/ios_sdk"
```
{% /tab %}
{% /tabs %}
2. Adjust SDK 연동 {% #integrate-the-adjust-sdk %}
---
`Xcode` 프로젝트에 Adjust SDK를 추가하고 나면 앱에 연동해야 합니다.
프로젝트 파일에 관련 가져오기 명령어를 추가합니다.
{% tabs %}
{% tab title="Swift" sync="swift" %}
Adjust SDK를 가져오기하려면 다음을 브리징 헤더 파일에 추가합니다.
```swift
import AdjustSdk
```
{% /tab %}
{% tab title="Objective-C" sync="objc" %}
Adjust SDK를 가져오기하려면 다음을 `AppDelegate.h` 파일에 추가합니다.
```objc
#import <AdjustSdk/AdjustSdk.h>
```
{% /tab %}
{% /tabs %}
3. iOS 프레임워크 추가 {% #add-ios-frameworks %}
---
Adjust SDK는 특정 기기 정보 액세스를 위해 프레임워크에 의존합니다. 이 정보 읽기를 활성화하려면 프레임워크를 추가하고 프레임워크를 **옵션** 으로 표시하시기 바랍니다.
| 프레임워크 | 설명 | 참고 사항 |
| ----------------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| `AdSupport.framework` | 디바이스 IDFA에 대한 액세스와, iOS 14 이하 버전의 기기에서 LAT에 대한 액세스도 활성화합니다. | 앱이 "아동" 카테고리를 타겟으로 하는 경우 이 프레임워크를 추가하지 않습니다. |
| `AdServices.framework` | ASA 어트리뷰션을 취급합니다. | |
| `StoreKit.framework` | SKAdNetwork 프레임워크에 대한 액세스를 활성화합니다. | Adjust SDK가 iOS 14 이상 버전의 기기에서 SKAdNetwork와의 커뮤니케이션을 처리하도록 허용하기 위해 필요합니다. |
| `AppTrackingTransparency.framework` | Adjust SDK가 iOS 14 이상 버전의 기기에서 사용자 ATT 동의 다이얼로그 및 액세스 동의 응답을 래핑하도록 허용하기 위해 필요합니다. | 앱이 "아동" 카테고리를 타겟으로 하는 경우 이 프레임워크를 추가하지 않습니다. |
| `WebKit.framework` | 애플리케이션의 웹뷰 사용을 활성화합니다. | 앱이 웹뷰를 사용하는 경우에만 필요합니다. |
4. SDK 서명 설정 {% #set-up-sdk-signature %}
---
Adjust SDK와 Adjust 서버 간 커뮤니케이션의 보안을 위해 SDK 서명 라이브러리를 사용하려면 [Adjust 헬프 센터에 있는 SDK 서명 가이드](https://help.adjust.com/ko/article/sdk-signature)의 지침을 따르시기 바랍니다.
5. (선택 사항) Adjust Web Bridge 설정 {% #set-up-web-bridge %}
---
앱이 웹뷰를 사용하는 경우 Adjust Web Bridge를 설정해 웹뷰 내 활동을 기록해야 합니다.
### 앱에 `AdjustBridge` 연동 {% #integrate-adjustbridge-into-your-app %}
Project Navigator:
1. View Controller의 소스 파일을 엽니다.
1. 파일 가장 위에 `import` 명령어를 추가합니다.
1. `AdjustBridge`에 대해 웹뷰 델리게이트의 `viewDidLoad` 또는 `viewWillAppear` 메서드에서 다음의 콜을 추가합니다.
{% tabs %}
{% tab title="Swift" sync="swift" %}
```swift
import AdjustSdk
func viewWillAppear(_ animated: Bool) {
let webView = WKWebView(frame: view.bounds)
// add var adjustBridge: AdjustBridge? on your interface
adjustBridge.loadWKWebViewBridge(webView)
}
```
{% /tab %}
{% tab title="Objective-C" sync="objc" %}
```objc
#import <AdjustSdk/AdjustSdk.h>
- (void)viewWillAppear:(BOOL)animated {
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
// add @property (nonatomic, strong) AdjustBridge *adjustBridge; on your interface
[self.adjustBridge loadWKWebViewBridge:webView];
}
// Your code here
```
{% /tab %}
{% /tabs %}
#### `AdjustBridge`를 웹뷰에 연동 {% #integrate-adjustbridge-into-your-web-view %}
웹뷰에서 자바스크립트 브릿지를 사용하려면 브릿지를 구성해야 합니다. 다음 자바스크립트 코드를 추가하여 Adjust iOS 웹브릿지를 초기화합니다:
{% tabs %}
{% tab title="Javascript" sync="js" %}
```js
var yourAppToken = yourAppToken;
var environment = AdjustConfig.EnvironmentSandbox;
var adjustConfig = new AdjustConfig(yourAppToken, environment);
Adjust.initSdk(adjustConfig);
```
{% /tab %}
{% /tabs %}
6. Adjust SDK 초기화 {% #initialize-the-adjust-sdk %}
---
Adjust SDK를 초기화하려면 config 객체를 만들어야 합니다. 이 객체에는 Adjust SDK 행동을 통제하는 구성 옵션이 포함되어 있습니다. 최소 설정을 위한 다음 인수를 전달합니다.
* `appToken`: 귀하의 [앱 토큰](https://help.adjust.com/ko/article/app-settings#view-your-app-token).
* `environment`: SDK를 실행할 환경. 이를 `ADJEnvironmentSandbox`로 설정합니다.
이 config 객체로 Adjust SDK 초기화:
1. 앱 델리게이트의 `didFinishLaunching` 또는 `didFinishLaunchingWithOptions` 메서드의 config 개체를 선언합니다.
1. `ADJLogLevelVerbose`(verbose)에 config 개체의 `logLevel` 속성을 설정합니다. 디바이스 정보를 검색하려면 verbose 로깅을 활성화해야 합니다.
1. `initSdk` 메서드에 인수로 config 개체를 전달합니다.
{% tabs %}
{% tab title="Swift" sync="swift" %}
```swift
import AdjustSdk
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let yourAppToken = "{YourAppToken}"
let environment = ADJEnvironmentSandbox
let adjustConfig = ADJConfig(appToken: yourAppToken,
environment: environment)
Adjust.initSdk(adjustConfig)
//...
return true
}
```
{% /tab %}
{% tab title="Objective-C" sync="objc" %}
```objc
#import <AdjustSdk/AdjustSdk.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSString *yourAppToken = @"{YourAppToken}";
NSString *environment = ADJEnvironmentSandbox;
ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken:appToken
environment:environment];
// Your code here
[Adjust initSdk:myAdjustConfig];
// Your code here
return YES;
}
```
{% /tab %}
{% tab title="Javascript" sync="js" %}
```js
var yourAppToken = yourAppToken;
var environment = AdjustConfig.EnvironmentSandbox;
var adjustConfig = new AdjustConfig(yourAppToken, environment);
Adjust.initSdk(adjustConfig);
```
{% /tab %}
{% /tabs %}
### iMessage 앱 설정 {% #set-up-your-imessage-app %}
{% callout type="important" %}
iMessage 확장 프로그램은 앱과 다른 번들 식별자를 가지며 다른 메모리 공간에서 실행됩니다. 동일한 토큰으로 두 가지를 모두 설정하는 경우 SDK는 혼합 데이터를 반환합니다. 따라서 Adjust 대시보드에서 iMessage 앱 전용으로 별도의 앱을 생성해야 하며, Adjust SDK를 초기화할 때 해당 토큰을 사용해야 합니다.{% callout /%}
앱이 iMessage를 타겟으로 하는 경우 설정해야 하는 추가적인 설정이 몇 가지 있습니다.
* 소스에서 Adjust SDK를 추가한 경우, iMessage 프로젝트 설정에 `ADJUST_IM=1` 프리프로세서 매크로를 추가합니다.
* Adjust SDK를 프레임워크로 추가한 경우, **Build Phases** 프로젝트 설정에 **New Copy Files Phase** 를 추가해야 합니다. 프레임워크 폴더에 복사될 `AdjustSdkIm.framework`를 설정합니다.
#### 세션 기록 {% #record-sessions %}
Adjust SDK는 iMessage 앱에서 iOS 시스템 알림을 구독하지 않습니다. 앱이 포그라운드에 진입했거나 나간 경우 Adjust SDK에 알리려면 `trackSubsessionStart` 및 `trackSubsessionEnd` 메서드를 콜해야 합니다.
`didBecomeActiveWithConversation:` 메서드 안의 `trackSubsessionStart`에 콜을 추가합니다.
{% tabs %}
{% tab title="Swift" sync="swift" %}
```swift
func didBecomeActive(with conversation: MSConversation) {
// Called when the extension is about to move from the inactive to active state.
// This will happen when the extension is about to present UI.
// Use this method to configure the extension and restore previously stored state.
Adjust.trackSubsessionStart()
}
```
{% /tab %}
{% tab title="Objective-C" sync="objc" %}
```objc
-(void)didBecomeActiveWithConversation:(MSConversation *)conversation {
// Called when the extension is about to move from the inactive to active state.
// This will happen when the extension is about to present UI.
// Use this method to configure the extension and restore previously stored state.
[Adjust trackSubsessionStart];
}
```
{% /tab %}
{% /tabs %}
`willResignActiveWithConversation:` 메서드 안의 `trackSubsessionEnd`에 콜을 추가합니다.
{% tabs %}
{% tab title="Swift" sync="swift" %}
```swift
func willResignActive(with conversation: MSConversation) {
// Called when the extension is about to move from the active to inactive state.
// This will happen when the user dismisses the extension, changes to a different
// conversation or quits Messages.
// Use this method to release shared resources, save user data, invalidate timers,
// and store enough state information to restore your extension to its current state
// in case it is terminated later.
Adjust.trackSubsessionEnd()
}
```
{% /tab %}
{% tab title="Objective-C" sync="objc" %}
```objc
-(void)willResignActiveWithConversation:(MSConversation *)conversation {
// Called when the extension is about to move from the active to inactive state.
// This will happen when the user dismisses the extension, changes to a different
// conversation or quits Messages.
// Use this method to release shared resources, save user data, invalidate timers,
// and store enough state information to restore your extension to its current state
// in case it is terminated later.
[Adjust trackSubsessionEnd];
}
```
{% /tab %}
{% /tabs %}
7. Adjust SDK 설정 {% #configure-the-adjust-sdk %}
---
config 개체와 초기화 로직을 추가하고 나면 Adjust SDK를 설정해 앱의 다양한 부분에 대한 정보를 기록할 수 있습니다. [구성 참조](/ko/sdk/ios/configuration) 및 [기능 가이드](/ko/sdk/ios/features)를 확인하여 기록할 항목을 정확히 설정합니다.
8. Adjust SDK 테스트 {% #test-the-adjust-sdk %}
---
Adjust SDK를 설정해 앱 정보를 기록할 수 있으므로 이제 테스트할 차례입니다. Adjust는 앱 테스트에 도움이 되는 [테스팅 콘솔](https://help.adjust.com/ko/article/testing-console)과 [Device API](https://help.adjust.com/ko/article/device-api)를 제공합니다.
[테스트 가이드](https://help.adjust.com/ko/article/test-the-adjust-sdk)를 따라 Adjust가 앱에서 예상값을 수신하는지 확인합니다.
9. 프로덕션을 위한 앱 빌드 {% #build-your-app-for-production %}
---
테스트를 완료한 후에 프로덕션을 위한 앱을 빌드할 수 있습니다. 이를 위해 config 객체를 업데이트해야 합니다.
다음 값 업데이트:
* `environment`: 이것을 `ADJEnvironmentProduction`으로 설정합니다.
* `logLevel`: [로깅 레벨](/ko/sdk/ios/configuration#set-your-logging-level)을 선택하거나 config 객체의 `allowSuppressLogLevel` 인수를 전달해 로깅을 완전히 비활성화합니다.
{% tabs %}
{% tab title="Swift" sync="swift" %}
```swift
import AdjustSdk
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let yourAppToken = "{YourAppToken}"
let environment = ADJEnvironmentProduction
let adjustConfig = ADJConfig(
appToken: yourAppToken,
environment: environment,
suppressLogLevel: true)
adjustConfig?.logLevel = ADJLogLevel.verbose
//...
Adjust.initSdk(adjustConfig)
//...
return true
}
```
{% /tab %}
{% tab title="Objective-C" sync="objc" %}
```objc
#import <AdjustSdk/AdjustSdk.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSString *yourAppToken = @"{YourAppToken}";
NSString *environment = ADJEnvironmentSandbox;
ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken:appToken
environment:environment
suppressLogLevel:YES];
[adjustConfig setLogLevel:ADJLogLevelVerbose];
//...
[Adjust initSdk:adjustConfig];
//...
return YES;
}
```
{% /tab %}
{% /tabs %}
디버그 빌드 또는 프로덕션 빌드를 만들지 여부에 따라 `Xcode` 빌드 플래그를 사용해 config를 동적으로 업데이트할 수 있습니다.
{% tabs %}
{% tab title="Swift" sync="swift" %}
```swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let yourAppToken = "{YourAppToken}"
#if DEBUG
let environment = ADJEnvironmentSandbox
let adjustConfig = ADJConfig(
appToken: yourAppToken,
environment: environment)
adjustConfig?.logLevel = ADJLogLevel.verbose
#else
let environment = ADJEnvironmentProduction
let adjustConfig = ADJConfig(
appToken: yourAppToken,
environment: environment)
adjustConfig?.logLevel = ADJLogLevel.suppress
#endif
//...
Adjust.initSdk(adjustConfig)
//...
return true
}
```
{% /tab %}
{% tab title="Objective-C" sync="objc" %}
```objc
#import <AdjustSdk/AdjustSdk.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSString *yourAppToken = @"{YourAppToken}";
#if DEBUG
NSString *environment = ADJEnvironmentSandbox;
ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken:appToken
environment:environment];
[adjustConfig setLogLevel:ADJLogLevelVerbose];
#else
NSString *environment = ADJEnvironmentProduction;
ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken:appToken
environment:environment];
[adjustConfig setLogLevel:ADJLogLevelSuppress];
#endif
//...
[Adjust initSdk:adjustConfig];
//...
return YES;
}
```
{% /tab %}
{% /tabs %}
{% /callout %}