빠른 시작¶
이 문서는 iOS/tvOS/macOS RUM SDK의 최단 접근 경로를 제공하여, 최소한의 단계로 검증 가능한 데이터 업로드를 완료할 수 있도록 돕습니다.
사전 준비¶
시작하기 전에 다음 준비를 완료하세요.
- RUM에서 iOS, tvOS 또는 macOS 애플리케이션을 생성하고
RUM App ID를 획득합니다. - 업로드 주소와 인증 방식을 확인합니다.
- 로컬 환경 배포:
datakitUrl준비 - 공용 네트워크 DataWay:
datawayUrl과clientToken준비 - 프로젝트에 SDK 설치가 완료되었는지 확인합니다.
Swift Package Manager사용을 권장하며,CocoaPods및Carthage도 호환됩니다.
연동 단계¶
- 프로젝트에
GuanceSDK를 설치합니다. - 애플리케이션 시작 시
FTSDKConfig를 초기화합니다. FTRumConfig를 초기화하고 View, Action, Resource, 크래시 및 ANR 수집을 활성화합니다.- 디버그 로그를 활성화하고, 애플리케이션을 실행하여 페이지 열기 또는 네트워크 요청을 트리거합니다.
- 콘솔과 Guance 플랫폼에서 데이터가 성공적으로 업로드되었는지 확인합니다.
SDK 설치¶
설치 방법은 애플리케이션 연동을 직접 참조하세요.
빠른 검증만 원할 경우, Swift Package Manager를 우선 사용하는 것을 권장합니다. 기존 의존성 관리 제약이 있는 경우에만 CocoaPods 또는 Carthage를 선택하세요.
최소 초기화 예제¶
iOS/tvOS는 일반적으로 AppDelegate에서 초기화합니다. macOS에서는 첫 번째로 표시되는 NSViewController의 viewDidLoad 메서드, NSWindowController의 windowDidLoad 메서드 호출이 AppDelegate의 applicationDidFinishLaunching보다 먼저 실행되므로, 첫 번째 뷰의 생명 주기 수집 이상을 방지하기 위해 main.m 또는 main.swift에서 SDK 초기화를 수행하는 것이 좋습니다.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 로컬 환경 배포 시 [[FTSDKConfig alloc] initWithDatakitUrl:datakitUrl] 사용
FTSDKConfig *config = [[FTSDKConfig alloc] initWithDatawayUrl:datawayUrl clientToken:clientToken];
config.enableSDKDebugLog = YES;
[FTMobileAgent startWithConfigOptions:config];
FTRumConfig *rumConfig = [[FTRumConfig alloc] initWithAppid:appid];
rumConfig.enableTraceUserView = YES;
rumConfig.enableTraceUserAction = YES;
rumConfig.enableTraceUserResource = YES;
rumConfig.enableTrackAppFreeze = YES;
rumConfig.enableTrackAppCrash = YES;
rumConfig.enableTrackAppANR = YES;
[[FTMobileAgent sharedInstance] startRumWithConfigOptions:rumConfig];
return YES;
}
// main.m 파일
#import <Cocoa/Cocoa.h>
#import <GuanceSDK/GuanceSDK.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 로컬 환경 배포 시 [[FTSDKConfig alloc] initWithDatakitUrl:datakitUrl] 사용
FTSDKConfig *config = [[FTSDKConfig alloc] initWithDatawayUrl:datawayUrl clientToken:clientToken];
config.enableSDKDebugLog = YES;
[FTSDKAgent startWithConfigOptions:config];
FTRumConfig *rumConfig = [[FTRumConfig alloc] initWithAppid:appid];
rumConfig.enableTraceUserView = YES;
rumConfig.enableTraceUserAction = YES;
rumConfig.enableTraceUserResource = YES;
rumConfig.enableTrackAppFreeze = YES;
rumConfig.enableTrackAppCrash = YES;
rumConfig.enableTrackAppANR = YES;
rumConfig.errorMonitorType = FTErrorMonitorAll;
rumConfig.deviceMetricsMonitorType = FTDeviceMetricsMonitorAll;
[[FTSDKAgent sharedInstance] startRumWithConfigOptions:rumConfig];
}
return NSApplicationMain(argc, argv);
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 로컬 환경 배포 시 FTSDKConfig(datakitUrl: datakitUrl) 사용
let config = FTSDKConfig(datawayUrl: datawayUrl, clientToken: clientToken)
config.enableSDKDebugLog = true
FTMobileAgent.start(withConfigOptions: config)
let rumConfig = FTRumConfig(appid: appid)
rumConfig.enableTraceUserView = true
rumConfig.enableTraceUserAction = true
rumConfig.enableTraceUserResource = true
rumConfig.enableTrackAppFreeze = true
rumConfig.enableTrackAppCrash = true
rumConfig.enableTrackAppANR = true
FTMobileAgent.sharedInstance().startRum(withConfigOptions: rumConfig)
return true
}
import Cocoa
import GuanceSDK
let delegate = AppDelegate()
NSApplication.shared.delegate = delegate
// 로컬 환경 배포 시 FTSDKConfig(datakitUrl: datakitUrl) 사용
let config = FTSDKConfig(datawayUrl: datawayUrl, clientToken: clientToken)
config.enableSDKDebugLog = true
FTSDKAgent.start(withConfigOptions: config)
let rumConfig = FTRumConfig(appid: appid)
rumConfig.enableTraceUserView = true
rumConfig.enableTraceUserAction = true
rumConfig.enableTraceUserResource = true
rumConfig.enableTrackAppFreeze = true
rumConfig.enableTrackAppCrash = true
rumConfig.enableTrackAppANR = true
rumConfig.errorMonitorType = .all
rumConfig.deviceMetricsMonitorType = .all
FTSDKAgent.sharedInstance().startRum(withConfigOptions: rumConfig)
_ = NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)
Swift 사용 시 먼저 main.swift 파일을 생성하고, AppDelegate.swift에서 @main 또는 @NSApplicationMain을 제거하세요.
위 예제는 최소 RUM 연동을 충족하며, 크래시 및 ANR 감지가 기본적으로 활성화되어 있습니다. 로컬 환경 배포를 사용하는 경우
initWithDatawayUrl:clientToken:/FTSDKConfig(datawayUrl:clientToken:)를initWithDatakitUrl:/FTSDKConfig(datakitUrl:)로 대체하세요.FTMobileConfig는 현재도 호환되어 사용할 수 있지만, 새 코드에서는FTSDKConfig사용을 권장합니다. macOS는 현재 Alpha 버전이며, 모든 iOS 기능이 지원된다고 보장하지 않습니다.
선택 사항: Log 및 Trace 초기화¶
로그 수집 또는 분산 추적이 추가로 필요한 경우, 다음 초기화를 계속 추가할 수 있습니다.
FTLoggerConfig *loggerConfig = [[FTLoggerConfig alloc] init];
loggerConfig.enableCustomLog = YES;
loggerConfig.enableLinkRumData = YES;
[[FTMobileAgent sharedInstance] startLoggerWithConfigOptions:loggerConfig];
FTTraceConfig *traceConfig = [[FTTraceConfig alloc] init];
traceConfig.enableAutoTrace = YES;
traceConfig.enableLinkRumData = YES;
[[FTMobileAgent sharedInstance] startTraceWithConfigOptions:traceConfig];
let loggerConfig = FTLoggerConfig()
loggerConfig.enableCustomLog = true
loggerConfig.enableLinkRumData = true
FTMobileAgent.sharedInstance().startLogger(withConfigOptions: loggerConfig)
let traceConfig = FTTraceConfig()
traceConfig.enableAutoTrace = true
traceConfig.enableLinkRumData = true
FTMobileAgent.sharedInstance().startTrace(withConfigOptions: traceConfig)
연동 성공 확인¶
enableSDKDebugLog = YES/true를 활성화한 상태로 애플리케이션을 실행합니다.- 페이지를 열거나
URLSession네트워크 요청을 한 번 실행합니다. - Xcode 콘솔에서 SDK 초기화 및 데이터 동기화 관련 로그가 나타나는지 확인합니다.
- Guance 콘솔로 돌아가서 애플리케이션에 RUM 데이터가 표시되는지 확인합니다.
추가 문제 해결이 필요한 경우 문제 해결을 참조하세요.
다음 단계¶
- 전체 설치 및 초기화 설명은 애플리케이션 연동을 계속 읽어보세요.
- 1.6.6 이전 버전에서 업그레이드하는 경우 마이그레이션 가이드를 읽어보세요.
- 모든 초기화 매개변수 설명은 SDK 초기화를 읽어보세요.
- RUM, Log, Trace의 상세 구성은 RUM 구성, Log 구성, Trace 구성을 각각 읽어보세요.
- WebView 모니터링 연동이 필요한 경우 WebView 데이터 모니터링을 읽어보세요.
- Session Replay 연동이 필요한 경우 iOS Session Replay를 읽어보세요.