iOS에서 카카오맵을 연동해보겠습니다. 다음 링크를 가서 SDK를 다운받고 설명을 읽어봅니다.
https://apis.map.kakao.com/ios/guide/
파일의 이름에 DaumMap이라고 나와 있네요. 이름 바꿀 생각도 없고, Swift로 제공할 생각도 없어보입니다. 네이버는 CocoaPods로 제공하던데 카카오는 좀 귀찮네요.
파일을 다운받았으면 다음 링크에서 키를 발급 받습니다.
어플리케이션을 추가하고
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 |