--- title: "iOS 시작 가이드" slug: "naveropenapiv3-maps-ios-sdk-v3-start" tags: ["Mobile Dynamic Map"] updated: 2026-10-22T09:13:28Z published: 2026-10-22T09:13:28Z canonical: "guide-gov.ncloud-docs.com/naveropenapiv3-maps-ios-sdk-v3-start" --- > ## Documentation Index > Fetch the complete documentation index at: https://guide-gov.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # iOS 시작 가이드 Classic/VPC 환경에서 이용 가능합니다. ## 시작하기 네이버 지도 SDK를 사용하기 위해서는 네이버 클라우드 플랫폼에서 클라이언트 ID를 발급받고, 발급받은 ID를 SDK에 지정해야 합니다. ### 지원 OS 버전 네이버 지도 SDK는 안드로이드 OS 버전 4.0.3(API 레벨 15) 이상에서 사용할 수 있습니다. ### 클라이언트 ID 발급 네이버 지도 모바일 SDK API를 사용하려면 다음과 같이 애플리케이션을 등록하고 클라이언트 ID를 발급받아야 합니다. 1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **AI·NAVER API** > **AI·NAVER API** 메뉴를 차례대로 클릭해 주십시오. 2. **Application 등록**을 선택하고 **Maps** 하위의 **Mobile Dynamic Map**을 체크합니다. - 선택하지 않으면 인증 실패 오류(429)가 발생합니다. 3. Android 앱 패키지 이름에 네이버 지도 SDK를 사용하고자 하는 앱의 패키지명을 추가하고 등록합니다. - 올바르게 입력하지 않으면 인증 실패 오류(401)가 발생합니다. 4. 등록한 애플리케이션의 인증 정보를 선택해 Client ID를 확인합니다. 자세한 방법은 [Application 사용 가이드](/docs/naveropenapiv3-application)를 참조하세요. ### 의존성 추가 네이버 지도 SDK는 [cocoapods](https://cocoapods.org/)를 통해 배포됩니다. 앱 프로젝트의 `Podfile`에 네이버 지도 SDK에 대한 의존성을 선언합니다. 다음은 네이버 지도 SDK에 대한 의존성을 선언한 예제입니다. ``` target 'NaverMapDemo' do pod 'NMapsMap' end ``` ### 클라이언트 ID 지정 발급받은 클라이언트 ID를 SDK에 지정하면 지도 API를 사용할 수 있습니다. 클라이언트 ID는 두 가지 방식으로 지정할 수 있습니다. #### info.plist에 지정 [info.plist](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html)의 [Custom Keys](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html#//apple_ref/doc/uid/TP40009254-SW10)로 클라이언트 ID를 지정할 수 있습니다. `info.plist`에 새로운 엘리먼트를 추가하고, `key`로 `NMFGovClientId`를, `string`으로 API 키를 지정합니다. 다음은 `info.plist`에 클라이언트 ID를 지정하는 예제입니다. ``` NMFGovClientId YOUR_CLIENT_ID_HERE ``` #### API를 호출해 지정 `info.plist`을 수정하지 않고 API를 호출해 클라이언트 ID를 지정할 수도 있습니다. [AppDelegate](https://developer.apple.com/documentation/uikit/uiapplicationdelegate)의 [-application:didFinishLaunchingWithOptions:](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622921-application) 내에서 [NMFAuthManager.govClientId](https://navermaps.github.io/ios-map-sdk/reference/Classes/NMFAuthManager.html)에 직접 셋팅할 수 있습니다. `NMFAuthManager`는 싱글톤 클래스이므로 [+shared](https://navermaps.github.io/ios-map-sdk/reference/Classes/NMFAuthManager.html)를 호출해 인스턴스를 얻어와야 합니다. 다음은 API를 호출해 클라이언트 ID를 지정하는 예제입니다. Swift ``` func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { NMFAuthManager.shared()?.govClientId = "YOUR_CLIENT_ID_HERE" return true } ``` Objective-C ``` - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [NMFAuthManager shared].govClientId = @"YOUR_CLIENT_ID_HERE"; return YES; } ``` ### 지도 표시 클라이언트 ID를 지정하고 `NMFMapView`를 뷰컨트롤러에 추가하면 지도가 화면에 나타납니다. 다음은 코드에서 직접 `NMFMapView`를 추가해 지도를 화면에 나타내는 예제입니다. Swift ``` override func viewDidLoad() { super.viewDidLoad() let mapView = NMFMapView(frame: view.frame) view.addSubview(mapView) } ``` Objective-C ``` - (void)viewDidLoad { [super viewDidLoad]; NMFMapView *mapView = [[NMFMapView alloc] initWithFrame:self.view.frame]; [self.view addSubview:mapView]; } ``` `XIB`나 `storyboard`등의 Interface Builder를 사용한다면 `UIView`를 추가하고, `Custom Class`로 `NMFMapView`를 지정해줍니다. Interface Builder에서 지도 추가하기 ![ios-1-1_ko.png](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/ios-1-1_ko.png?sv=2026-02-06&spr=https&st=2026-10-27T13%3A36%3A30Z&se=2026-10-27T14%3A36%3A30Z&sr=c&sp=r&sig=g%2Fw85mAMoDggVEg4rMGNI3OdOpvM8r7aN4A5awr3eEk%3D) ### 인증 실패 처리 클라이언트 ID를 잘못 지정했거나 사용량이 쿼터를 초과한 경우 지도가 화면에 나타나지 않으며, console창과 `UIAlertController`로 인증 오류 메시지가 출력됩니다. [NMFAuthManager.delegate](https://navermaps.github.io/ios-map-sdk/reference/Classes/NMFAuthManager.html) 속성을 지정해 [-authorized:error:](https://navermaps.github.io/ios-map-sdk/reference/Protocols/NMFAuthManagerDelegate.html#/c:objc%28pl%29NMFAuthManagerDelegate%28im%29authorized:error:) 델리게이트 메서드를 구현하면 인증 실패 이벤트를 받을 수 있습니다. 델리게이트 메서드를 구현하면 인증 처리시마다 델리게이트 메서드가 호출되며, 인증 성공 여부와 오류 코드가 파라미터로 전달됩니다. 또한 인증에 실패하더라도 `UIAlertController`가 노출되지 않습니다. 각 파라메터의 의미는 다음과 같습니다. - `autohrized`: 인증 성공 여부입니다. 인증에 성공하면 [NMFAuthStateAuthorized](https://navermaps.github.io/ios-map-sdk/reference/Enums/NMFAuthState.html#/c:@E@NMFAuthState@NMFAuthStateAuthorized)가, 실패하면 [NMFAuthStateUnauthorized](https://navermaps.github.io/ios-map-sdk/reference/Enums/NMFAuthState.html#/c:@E@NMFAuthState@NMFAuthStateUnauthorized)가 전달됩니다. - `error`: 인증 실패의 원인입니다. 인증에 성공하면 `nil`입니다. `code` 속성으로 에러 코드를 확인할 수 있습니다. 주로 발생하는 에러 코드는 다음과 같습니다. | `code` | 설명 | | --- | --- | | 401 | - 잘못된 클라이언트 ID를 지정함 - 잘못된 클라이언트 유형을 사용함 - 콘솔에서 앱 Bundle Identifier를 잘못 등록함 | | 429 | - 콘솔에서 Maps 서비스를 선택하지 않음 - 사용 한도가 초과됨 | | 800 | 클라이언트 ID를 지정하지 않음 | 그 외의 원인으로 인증에 실패하면 `AuthFailedException`이 발생합니다.