--- title: "iOS SDK" slug: "elsa2-sdk-ios" updated: 2026-09-17T09:07:51Z published: 2026-09-17T09:07:51Z canonical: "guide.ncloud-docs.com/elsa2-sdk-ios" --- > ## Documentation Index > Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # iOS SDK Classic/VPC 환경에서 이용 가능합니다. iOS SDK에서는 Effective Log Search & Analytics 2.0 서비스가 제공하는 iOS SDK의 사용 방법을 설명합니다. 참고 iOS SDK는 HTTPS 프로토콜을 이용하여 로그를 전송합니다. SDK를 사용하는 순서는 다음와 같습니다. [1. 사전 준비](/docs/elsa2-sdk-ios#1%EC%82%AC%EC%A0%84%EC%A4%80%EB%B9%84) [2. SDK 설치](/docs/elsa2-sdk-ios#2iOSSDK%EC%84%A4%EC%B9%98) [3. SDK 사용](/docs/elsa2-sdk-ios#5SDK%EC%82%AC%EC%9A%A9) ## 1. 사전 준비 iOS SDK를 설치하기 위한 사전 준비 사항은 다음과 같습니다. 1. 네이버 클라우드 플랫폼의 콘솔에서 [프로젝트를 생성](/docs/elsa2-project)해 주십시오. 2. 생성한 [프로젝트의 상세 정보 화면](/docs/elsa2-project#%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%83%81%EC%84%B8%EC%A0%95%EB%B3%B4%ED%99%95%EC%9D%B8)에서 txtToken 값을 확인해 주십시오. 3. iOS용 SDK를 [다운로드](/docs/elsa2-sdk-download)해 주십시오. ## 2. iOS SDK 설치 iOS SDK를 설치하는 방법은 다음과 같습니다. 1. 다운로드한 SDK 파일의 압축을 풀어 주십시오. 2. SDK를 설치할 iOS프로젝트의 `Frameworks` 폴더에 SDK 파일을 저장해 주십시오. - Nelo2SDK.framework - CrashReporter.framework 3. Xcode를 실행하여 프로젝트를 열어 주십시오. 4. **TARGETS**에서 빌드할 타겟을 클릭해 주십시오. 5. **Build Phases**를 선택한 후 **Link Binary With Libraries** 영역에 다음 시스템 프레임워크를 추가해 주십시오. - UIKit.framework - SystemConfiguration.framework - CoreTelephony.framework - Foundation.framework ## 3. SDK 사용 다음의 Effective Log Search & Analytics 2.0 iOS SDK를 사용하는 실제 코드 예를 참고하여 프로젝트에 로그를 전송해 주십시오. ``` NSString* appID = @"02b96c3d8bbe_elsa-test"; NSString* appVer= @"1.0.0"; NSString* serverAddr = @"elsa-v2-col.ncloud.com"; //Effective Log Search & Analytics 수집 서버 주소 NSString* userID = @"tester"; //사용자 ID // Nelo Init [NeloLog init:serverAddr ofProjectName:appID withProjectVersion:appVer forUserId:userID]; // Nelo 로그 전송 [NeloLog info:@"ErrorCode" withMessage:@"Message"]; [NeloLog error:@"ErrorCode" withMessage:@"Message" atLocation:@"test loc"]; ``` ## iOS SDK API 명세 iOS SDK는 다음과 같은 API를 제공합니다. - [초기화 API](/docs/elsa2-sdk-ios#%EC%B4%88%EA%B8%B0%ED%99%94API) - [로그 전송 API](/docs/elsa2-sdk-ios#%EB%A1%9C%EA%B7%B8%EC%A0%84%EC%86%A1API) - [옵션 설정 API](/docs/elsa2-sdk-ios#%EC%98%B5%EC%85%98%EC%84%A4%EC%A0%95API) ### 초기화 API 초기화하는 API는 다음과 같습니다. ``` // Default NeloLog init method + (bool) init:(NSString *)serverAddr ofProjectName:(NSString*)appName withProjectVersion:(NSString*)appVersion; + (bool) init:(NSString *)serverAddr ofProjectName:(NSString*)appName withProjectVersion:(NSString*)appVersion forUserId:(NSString*)userId; ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `serverAddr` | 로그 수집 서버의 주소 - Collector 서버 주소: elsa-col.ncloud.com | | `appName` | 프로젝트 아이디 | | `appVersion` | 로그를 전송할 앱의 버전 정보 - 이 버전으로 심벌리케이션 시 심벌 파일과 매핑 | | `userId` | 사용자 아이디 | 참고 SDK Version 0.32부터 onPort, byProtocol 파라미터가 삭제되었습니다. <예시> ``` NSString* appID = @"02b96c3d8bbe_elsa-test"; NSString* appVer= @"1.0.0"; NSString* serverAddr = @"elsa-v2-col.ncloud.com"; //Effective Log Search & Analytics 2.0 수집 서버 주소 NSString* userID = @"tester"; //사용자 ID // Nelo Init [NeloLog init:serverAddr ofProjectName:appID withProjectVersion:appVer forUserId:userID]; ``` ### 로그 전송 API 로그를 전송하는 API는 다음과 같습니다. ``` // send log method + (void) debug:(NSString*)errorCode withMessage:(NSString*)message; + (void) error:(NSString*)errorCode withMessage:(NSString*)message; + (void) fatal:(NSString*)errorCode withMessage:(NSString*)message; + (void) info:(NSString*)errorCode withMessage:(NSString*)message; + (void) warn:(NSString*)errorCode withMessage:(NSString*)message; + (void) debug:(NSString*)errorCode withMessage:(NSString*)message atLocation:(NSString*)location; + (void) error:(NSString*)errorCode withMessage:(NSString*)message atLocation:(NSString*)location; + (void) fatal:(NSString*)errorCode withMessage:(NSString*)message atLocation:(NSString*)location; + (void) info:(NSString*)errorCode withMessage:(NSString*)message atLocation:(NSString*)location; + (void) warn:(NSString*)errorCode withMessage:(NSString*)message atLocation:(NSString*)location; ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `errorCode` | NELO의 `errorCode`필드에 매핑되는 값(길이 제한: 128자) | | `message` | NELO의 `body` 필드에 매핑되는 값(길이 제한 없으나 전체 로그 용량은 제한 있음) | | `location` | NELO의 `location` 필드에 매핑되는 값(`error`가 발생한 위치를 전송) | <예시> ``` [NeloLog info:@"ErrorCode" withMessage:@"Message"]; ``` ### 옵션 설정 API 옵션 설정 API는 다음과 같습니다. #### 사용자 아이디 설정 사용자 아이디를 설정하는 API는 다음과 같습니다. ``` + (void) setUserId:(NSString*)userId; ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `userId` | 사용자 아이디 | #### 로그 유형 설정 로그 유형을 설정하는 API는 다음과 같습니다. ``` + (void) setLogType:(NSString*)logType; ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `logType` | 로그 유형(logType) 정보 | #### 크래시 콜백 크래시 콜백 API 사용하여 크래시 발생 시 크래시 로그를 전송하기 전에 사용자가 정의한 함수를 호출할 수 있습니다. 크래시 콜백 API는 다음과 같습니다. ``` + (void) setCrashBlock:(void (^)(void))block; ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `block` | 앱 크래시 발생 시 크래시를 전송하는 방법 설정 | <예시> ``` [NeloLog setCrashBlock:^{ NSLog(@"crashed"); [NeloLog setCustomField:@"MyValue" forKey:@"MyKey"]; }]; ``` #### 로그 레벨(loglevel) 설정 로그 레벨(loglevel) 이상의 로그만 전송하는 API는 다음과 같습니다. 참고 - 로그 레벨(logLevel)별로 함수를 사용합니다. - 로그 레벨(logLevel): Fatal, Error, Warn, Info, Debug - 값은 다음의 Constant값으로 정의되어 있습니다. - NELO2_LOGLEVEL_DEBUG (기본값) - NELO2_LOGLEVEL_INFO - NELO2_LOGLEVEL_WARN - NELO2_LOGLEVEL_ERROR - NELO2_LOGLEVEL_FATAL ``` + (void) setLogLevelFilter:(NSString*)logLevelFilter; ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `logLevelFilter` | 로그 레벨 이상의 로그만 NELO로 전송 | <예시> ``` [NeloLog setLogLevelFilter:NELO2_LOGLEVEL_WARN]; ``` #### 로그 전송 방법 설정 로그 전송 방법을 설정하는 API는 다음과 같습니다. ``` + (void) setNeloSendMode:(NSString*)sendMode; ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `sendMode` | 로그 전송 방법 설정 | 파라미터 설정값에 따른 네트워크별 로그 전송 방법은 다음과 같습니다. - `ALL` 설정 시 | 네트워크 상태 | 전송 방법 | | --- | --- | | 3g | 전송 | | Wi-Fi | 전송 | | Not Connected | 미전송 | - `WIFI` 설정 시 | 네트워크 상태 | 전송 방법 | | --- | --- | | 3g | 미전송 | | Wi-Fi | 전송 | | Not Connected | 미전송 | #### 심벌리케이션 수행 설정 클라이언트에서의 심벌리케이션(Symbolication) 수행 여부를 설정하는 API는 다음과 같습니다. 참고 - SDK의 기본 설정값은 다음과 같습니다. - iOS SDK: `false`(클라이언트에서 심벌리케이션 작업을 하지 않음) - mac SDK: `true`(클라이언트에서 심벌리케이션 작업을 수행함) - 클라이언트에서 심벌리케이션 작업을 수행하면, 크래시 발생 시 앱이 중지될 때 약간의 지연이 발생 ``` + (void) enableClientSideSymbolication:(bool)enable; ``` 각 파라미터에 대한 설명은 다음과 같습니다. | 파라미터 | 설명 | | --- | --- | | `enable` | 클라이언트에서의 심벌리케이션 수행 여부 설정 |