Kakao 지도 IOS API 가이드

Hyle·2021년 8월 12일

IOS

목록 보기
1/1
post-thumbnail

카카오톡 디벨로퍼 가이드

우선 카카오톡 공식문서를 잘 읽어보자.

하지만 위 가이드는 Xcode 버전 10.0을 대상으로 하기 때문에 몇 가지 오류가 발생한다.

오류를 해결한 과정을 기록한다.

네이티브 앱 키 발급 및 Bundle ID 등록하기

우선 Bundle ID를 등록하자.

아래의 과정을 차례로 따르자
1. 카카오 개발자사이트 (https://developers.kakao.com) 접속
2. 개발자 등록 및 앱 생성
3. IOS 플랫폼 추가: 앱 선택 – [플랫폼] – [iOS 플랫폼 등록] – 번들ID(필수) 등록
4. 페이지 상단의 [네이티브 앱 키]와 등록한 [번들 ID]를 사용합니다.

프로젝트를 생성할때 Bundle identifier를 기억해두거나 잊었다면

아래 사진에서 Bundle identifier를 확인할 수 있다.

iOS 플랫폼 등록을 누르고 위에서 확인한 Bundle identifier를 입력한다.

Info.plist 파일에 다음과 같은 항목으로 앞 단계에서 발급 받은 APP KEY 를 설정한다.

  • Key name: KAKAO_APP_KEY
  • Value Type : String
  • Value : 발급 받은 APP KEY

Download SDK

SDK를 다운받아서 압축을 풀고 DaumMap.embeddedframework 폴더를 애플리케이션 프로젝트로 복사한다.
Add Files to “프로젝트명”을 이용하거나, finder에서 Xcode 왼편의 프로젝트 내에 드래그한다.

라이브러리 파일 추가

Frameworks, Libraries, and Embedded Content에서 +버튼을 눌러 아래 프레임워크들을 추가한다.

  • Metal.framework (OpenGLES.framework 대신)
  • SystemConfiguration.framework
  • CoreLocation.framework
  • QuartzCore.framework
  • libc++.tbd
  • libxml2.tbd
  • libsqlite3.tbd

Link Binary With Libraries에서 아래 프레임 워크를 추가한다.

  • libc++.tbd
  • libxml2.tbd
  • libsqlite3.tbd

현재 Map용 SDK 는 Automatic Reference Counting(ARC) 을 지원하지 않는다.

Objective-C Automatic Reference Counting 을 No,
Weak references in Manual Retain Release을 No 로 바꾸어준다

Xcode12에서 ARM기반 맥(애플실리콘)을 지원함에 따라 아이폰 시뮬레이터에 ARM용 아키텍쳐 arm64가 추가되면서 오류가 발생한다.
Excluded Architectures에서 사진과 같이 arm64를 입력해주고,
User-Defined에서 VAILD_ARCHS가 있다면 제거해준다.

SDK가 Objective-C로 구성되어 있기 때문에 우리가 사용하는 Swift에서 사용하기 위해 "Bridging Header" 설정해야한다.

커맨드 + n을 눌러 header file을 생성한다.

프로젝트명-Bridging-Header.h로 파일을 저장한다.

헤더 파일을 열고 # import <DaumMap/MTMapView.h>을 추가해준다.

오른쪽에 Full Path를 복사하고 아래 사진의 Objective-C Bridging Header의 값에 붙여 넣기한다.

이제 ViewController에 다음과 같이 코딩하고 실행한다.

import UIKit

class ViewController: UIViewController, MTMapViewDelegate {
    
    var mapView: MTMapView?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        mapView = MTMapView(frame: self.view.bounds)
        if let mapView = mapView {
            mapView.delegate = self
            mapView.baseMapType = .standard
            self.view.addSubview(mapView)
        }
    }


}

올바르게 동작하는 것을 볼 수 있다.

profile
꿈 속 코딩

0개의 댓글