We constantly publish updates to our documentation, which may not yet be available in your language. For the most current information, use the English version.
Adjust SDK를 시작하려면 우선 프로젝트에 Adjust SDK를 dependency로 추가해야 합니다.
중요:
Adjust SDK는 iOS 9 이상 버전을 지원합니다.
Cocoapods
Cocoapods를 사용하여 SDK를 추가하려면 Podfile 에서 사용하고자 하는 버전을 지정합니다.
// Get pod from repository
pod 'Adjust', '~> 4\.38\.1'
// Get source directly from GitHub
pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4\.38\.1'
앱에서 웹뷰를 사용하는 경우 다음을 추가하여 Adjust Web Bridge를 추가해야 합니다:
pod 'Adjust/WebBridge', '~> 4\.38\.1'
Carthage
Carthage를 사용하여 SDK를 추가하려면 다음을 Cartfile 에 추가합니다.
github "adjust/ios_sdk"
Swift 패키지 매니저
Swift 패키지 매니저를 사용하여 SDK를 추가하는 경우:
파일 을 클릭합니다.
Swift 패키지 를 선택합니다.
패키지 Dependency 추가 를 선택합니다.
나타나는 창에 SDK의 GitHub 주소를 입력합니다.
https://github.com/adjust/ios_sdk
버전 드롭다운 메뉴에서 사용을 원하는 Adjust SDK 버전을 선택합니다. 최신 안정 버전은 배포 페이지에서 확인하실 수 있습니다.
프레임워크로 추가
정적 프레임워크의 배포는 프라이버시 매니페스트 를 포함하지 않기 때문에 버전 4.38.0부터 사용이 중단됩니다.
프로젝트에 Adjust SDK를 프레임워크로 추가하여 연동할 수도 있습니다. 배포 페이지에서는 다음의 아카이브를 확인할 수 있습니다.
AdjustSdkDynamic.framework.zip
AdjustSdkTvDynamic.framework.zip
AdjustSdkImDynamic.framework.zip
AdjustSdkWebBridgeDynamic.framework.zip
AdjustSdk-iOS-tvOS-Dynamic.xcframework.zip
Apple은 iOS 8을 출시한 후, 임베디드 프레임워크로도 알려진 동적 프레임워크(dynamic frameworks)를 도입했습니다. 앱이 iOS 8 이상 버전을 타겟팅하는 경우에는 Adjust SDK 동적 프레임워크를 사용할 수 있습니다. 필요에 따라 정적(static) 또는 동적(dynamic) 프레임워크를 선택하여 프로젝트에 추가하시기 바랍니다.
배포 페이지에서 아카이브를 다운로드합니다.
컴퓨터에서 아카이브를 압축 해제합니다.
.framework 폴더를 Xcode 프로젝트에 복사합니다.
tvOS 앱을 만드는 경우 Adjust의 tvOS 프레임워크를 활용할 수 있습니다. 이는 AdjustSdkTvStatic.framework.zip 와 AdjustSdkTvDynamic.framework.zip 아카이브에서 찾을 수 있습니다.
iMessage 앱을 생성하는 경우 IM 프레임워크를 사용할 수 있습니다. 이는 AdjustSdkImDynamic.framework.zip 아카이브에서 찾을 수 있습니다.
앱에서 웹뷰를 사용하는 경우 Adjust Web Bridge를 활용할 수 있습니다. 이는 AdjustSdkWebBridgeDynamic.framework.zip 아카이브에서 찾을 수 있습니다.
필요한 프레임워크가 모두 추가되면 앱 내에서 Adjust SDK를 초기화할 수 있습니다. 이를 위해 앱 토큰, 앱을 실행하고자 하는 환경과 함께 ADJConfig 객체를 초기화합니다.
중요:
테스트 시에는 반드시 환경이 ADJEnvironmentSandbox 로 설정되어야 합니다. 앱을 App Store에 제출하기 전에 이를 ADJEnvironmentProduction 로 변경하시기 바랍니다.
표준 설정
프로젝트 네비게이터에서 어플리케이션 델리게이트의 소스 파일을 엽니다. 파일 상단에 import 명령어를 추가합니다. 다음의 콜을 앱 델리게이트의 didFinishLaunching 또는 didFinishLaunchingWithOptions 메서드에서 Adjust에 추가합니다.
Objective-C
Swift
Javascript
#import "Adjust.h"
// or #import <Adjust/Adjust.h>
// or #import <AdjustSdk/Adjust.h>
// or #import <AdjustSdkTv/Adjust.h>
// or #import <AdjustSdkIm/Adjust.h>
// ...
NSString *yourAppToken = @"{YourAppToken}";
NSString *environment = ADJEnvironmentSandbox;
*adjustConfig = [ADJConfig configWithAppToken:yourAppToken
environment:environment];
[Adjust appDidLaunch:adjustConfig];
중요:
Adjust SDK를 이 방식으로 초기화하는 것은 매우 중요합니다. 그 외의 시간에 Adjust SDK를 초기화하면 예상하지 못한 행동으로 이어질 수 있습니다. 자세한 내용은 Adjust의 FAQ 를 참고하시기 바랍니다.
iMessage 설정
Adjust SDK를 프로젝트에 추가한 방식에 따라 추가 단계가 필요할 수 있습니다.
소스에서 Adjust SDK를 추가한 경우, iMessage 프로젝트 설정에 프리프로세서 매크로 ADJUST_IM=1 가 설정되어 있는지 확인합니다.
Adjust SDK를 프레임워크로 추가한 경우, Build Phases 프로젝트 설정에 New Copy Files Phase 를 추가해야 합니다. Frameworks 폴더에 복사될 AdjustSdkIm.framework 를 설정합니다.
세션 트래킹
iMessage 앱에서 세션 트래킹을 설정하려면 추가 단계를 수행해야 합니다. 표준 iOS 앱에서 Adjust SDK는 iOS 시스템 알림을 구독합니다. 이를 통해 Adjust SDK는 앱이 포그라운드 상태로 진입하고 이탈하는 시점을 알 수 있습니다. 이는 iMessage 앱의 작동 방식이 아닙니다. 이러한 이유로 앱 뷰 컨트롤러에서 trackSubsessionStart 및 trackSubsessionEnd 메서드에 콜을 추가해야 합니다. 이렇게 하면 앱이 포그라운드 상태로 진입하거나 종료할 때 Adjust SDK에 알립니다.
didBecomeActiveWithConversation: 메서드 내에서 trackSubsessionStart 에 대한 콜을 추가합니다.
Objective-C
Swift
-(void)didBecomeActiveWithConversation:(MSConversation *)conversation {
// 확장이 비활성에서 활성 상태로 변경될 때 호출됨.
// 확장이 UI를 표시하려고 할 때 발생함. // 확장을 구성하고 이전에 저장된 상태를 복구하려면 이 메서드를 사용하시기 바랍니다. [Adjust trackSubsessionStart];
}
willResignActiveWithConversation:메서드 내에서trackSubsessionEnd` 에 콜을 추가합니다.
Objective-C
Swift
-(void)willResignActiveWithConversation:(MSConversation *)conversation {
// 확장이 비활성에서 활성 상태로 변경될 때 호출됨.
// 사용자가 확장을 거부 또는 다른 대화로 변경하거나
// Messages를 종료할 때 발생.
// 공유된 리소스 배포, 사용자 데이터 저장, 타이머 무효화,
// 충분한 상태 정보 저장을 통해 확장을 현재 상태로 복구하기 위해 사용하는 메서드.
// 이후에 종료되는 경우에 사용함.
[Adjust trackSubsessionEnd];
}
참고:
앱과 iMessage 확장은 서로 다른 메모리 공간에서 작동됩니다. 서로 다른 번들 ID를 갖고 있기 때문입니다. 이러한 이유로 Adjust SDK를 앱과 확장과 동일한 앱 토큰을 통해 초기화하면 문제가 발생할 수 있습니다. 두 개의 독립된 인스턴스가 서로를 독립적으로 트래킹하게 될 것입니다. 이 경우 Adjust SDK가 Adjust 백엔드에 혼합된 정보를 전송하게 됩니다. 따라서 Adjust 대시보드에서 iMessage 앱 전용으로 별도의 앱을 생성하고, 새로운 토큰으로 SDK를 초기화하는 것이 좋습니다.
웹 브릿지 설정
Adjust 웹 브릿지를 앱에 연동하려면 다음의 단계를 수행합니다.
앱에 AdjustBridge 연동
Project Navigator에서 View Controller의 소스 파일을 엽니다. 파일 상단에 import 구문을 추가합니다. Web View Delegate의 viewDidLoad 또는 viewWillAppear 메서드에서 다음의 콜을 AdjustBridge 에 추가합니다.
Objective-C
Swift
#import "AdjustBridge.h"
// or #import <AdjustSdkWebBridge/AdjustBridge.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];
// optionally you can add a web view delegate so that you can also capture its events
// [self.adjustBridge loadWKWebViewBridge:webView wkWebViewDelegate:(id<wknavigationdelegate>)self];
}
// ...
포함된 WebViewJavascriptBridge 를 사용할 수도 있습니다. 이는 AdjustBridge 인스턴스의 bridgeRegister 속성을 설정하여 사용할 수 있습니다. 자세한 사용 방법은 라이브러리 문서 를 참조하시기 바랍니다.
웹뷰에 AdjustBridge 연동
웹뷰에서 자바스크립트 브릿지를 사용하려면 브릿지를 구성해야 합니다. 다음 자바스크립트 코드를 포함하여 Adjust iOS 웹브릿지를 초기화합니다:
Javascript
function setupWebViewJavascriptBridge(callback) {
if (window.WebViewJavascriptBridge) {
return callback(WebViewJavascriptBridge);
}
if (window.WVJBCallbacks) {
return window.WVJBCallbacks.push(callback);
}
window.WVJBCallbacks = [callback];
var WVJBIframe = document.createElement('iframe');
WVJBIframe.style.display = 'none';
WVJBIframe.src = 'https://__bridge_loaded__';
document.documentElement.appendChild(WVJBIframe);
setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
}
setupWebViewJavascriptBridge(function(bridge) {
// ...
var yourAppToken = yourAppToken;
var environment = AdjustConfig.EnvironmentSandbox;
var adjustConfig = new AdjustConfig(yourAppToken, environment);
Adjust.appDidLaunch(adjustConfig);
// ...
});
중요:
Adjust SDK를 이 방식으로 초기화하는 것은 매우 중요합니다. 그 외의 시간에 Adjust SDK를 초기화하면 예상하지 못한 행동으로 이어질 수 있습니다. 자세한 내용은 Adjust의 FAQ 를 참고하시기 바랍니다.