본문 바로가기

ios

Kakao Maps API with Swift

iOS에서 카카오맵을 연동해보겠습니다. 다음 링크를 가서 SDK를 다운받고 설명을 읽어봅니다. 

https://apis.map.kakao.com/ios/guide/

파일의 이름에 DaumMap이라고 나와 있네요. 이름 바꿀 생각도 없고, Swift로 제공할 생각도 없어보입니다. 네이버는 CocoaPods로 제공하던데 카카오는 좀 귀찮네요.

파일을 다운받았으면 다음 링크에서 키를 발급 받습니다.

https://developers.kakao.com/

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

어플리케이션을 추가하고

iOS 플랫폼을 등록합니다. 만들때 사용할 Bundle ID 사용해야됩니다.

이제 Xcode를 실행하고 새 프로젝트를 생성합니다. 제가 사용한 Xcode 버전은 Version 11.6 (11E708) 입니다.

다음과 같이 Product Name을 이전에 등록한 Bundle ID에서 사용된 값으로 사용해야 됩니다.

카카오 개발자 페이지에서 다음과 같이 네이티브 앱 키를 확인하고

Info.plist파일에 다음과 같이 설정합니다.

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

이전에 다운받은 라이브러리를 추가해줍니다.
/IOS_DaumMap_SDK_*.*.*/lib/DaumMap.embeddedframework/DaumMap.framework를 추가

다운받은 라이브러리를 추가

의존성을 가지고 있는 다음 라이브러리들도 추가해줍니다.

OpenGLES.framework
SystemConfigure.framework
CoreLocation.framework
QuartzCore.framework
libc++.tbd
libxml2.tbd
libsqlite3.tbd

현재 Map용 SDK 는 ARC를 지원하지 않습니다. 따라서 작업할 때 ARC 를 NO 로 설정합니다. 여기까지가 개발자 페이지에 있는 내용입니다.

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

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

#import <DaumMap/MTMapView.h> 을 중간에 코딩해줍니다.

TARGETS - Build Settings - Swift Compiler - General - 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)
        }
    }
}

경고, 에러가 나오네요. 역시 한번에 잘 안됩니다.

하나 있는 Warning
/Users/francis/project/study/ios/KakaoMap/KakaoMap.xcodeproj OpenGLES is deprecated. Consider migrating to Metal instead.
이건 나와 있는대로 OpenGLES framework 참조를 지우고 Metal을 넣으니 해결됩니다.
나머지 Error들은 내용이 라이브러리 중 tbd파일 관련된 거고 이전에 추가할 때 tbd 라이브러리가 다음과 같이 추가가 안되있는것을 발견했습니다.

그래서 TARGET - Build Phases - Link Binary With Libraries 에서 추가를 시도하였습니다. 

이렇게 추가했더니 General로 와서 확인해도 잘 들어가 있는걸로 보입니다.

실행하니 다음과 같이 지도가 실행되는것을 확인할 수 있었습니다.

'ios' 카테고리의 다른 글

Alamofire 간단하게 사용하기  (0) 2020.04.24
Xcode 에서 GitLab 연동하기  (0) 2020.04.22
위치서비스를 위한 권한 상태값 가져오기  (0) 2020.04.20
Location updates in Background Modes  (0) 2020.04.19
Migration in Realm  (0) 2020.04.18