Jiwift

[iOS/Swift] 주소 검색 기능 구현하기 무료 API 사용 본문

iOS Dev/iOS

[iOS/Swift] 주소 검색 기능 구현하기 무료 API 사용

지위프트 2023. 12. 11. 23:52
반응형

주소 검색 모습

 이번에는 iOS에서 주소 검색 기능을 구현하도록 하겠습니다. 무료 사용을 위해서 다음(카카오)에서 제공해 주는 API를 사용하도록 하겠습니다. 

 

[Open API] 카카오(다음) 주소 검색 API 사용 (tistory.com)

 

[Open API] 카카오(다음) 주소 검색 API 사용

서비스에서 주소 검색이 필요한 경우에 사용하기 좋은 무료 API를 소개합니다. 다음에서 제공해 주는 API를 사용하면 쉽게 웹과 앱에서 주소 검색 기능을 구현할 수 있습니다. Key를 발급받을 필요

jiwift.tistory.com

 우선 위에 글을 통해서 다음 주소 검색 API를 사용하기 위한 웹을 준비합니다. 위 글에는 iOS에서 사용하기 위한 다음 주소 검색 웹 코드와 적용법이 있습니다. 

 

 // 네이티브 앱 코드 호출
let contentController = WKUserContentController()
contentController.add(self, name: "callBackHandler")

let configuration = WKWebViewConfiguration()
configuration.userContentController = contentController

// 웹킷 뷰 생성
let webView = WKWebView(frame: .zero, configuration: configuration)
self.view.addSubview(webView)

// 웹페이지 로드
if let url = URL(string: "카카오 웹 검색 API 주소") {
    let request = URLRequest(url: url)
    webView.load(request)
}

  위에 글을 통해서 모든 준비가 끝났다면 iOS 프로젝트로 돌아와서 Swift를 통해 웹킷을 설정하는 시점에 위와 같이 코드를 적용해 주세요. 보시면 별거 없습니다.

 

 WKUserContentController를 통해서 callBackHandler를 등록하여 JS에서 네이티브 환경으로 메시지를 넘겨줍니다. 웹킷을 선언함과 동시에 WKUserContentController가 적용된 configuration을 적용하고 웹킷에 추가하였습니다. AutoLayout 잡는 부분은 생략하겠습니다.

 

 'callBackHandler'는 변경될 수 있는 값입니다. 위 링크를 통해서 카카오 API 웹을 생성시키셨다면, 그 코드 안에 'callBackHandler'를 찾아보실 수 있을 것입니다. 다른 프로젝트를 하실 때도 add 하는 값과 웹 쪽에서 사용하는 값을 같아야 합니다.

 

extension PostCodeViewController: WKScriptMessageHandler {
    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
        if let data = message.body as? [String: Any] {
            // 기본 주소
            if let address = data["address"] as? String {
                print(address)
            }

            // 지번 주소
            if let jibunAddress = data["jibunAddress"] as? String {
                print(jibunAddress)
            }

            // 도로명 주소
            if let roadAddress = data["roadAddress"] as? String {
                print(roadAddress)
            }
        }
    }
}

 WKUserContentController를 사용했기 때문에 userContentController를 통해서 웹에서 받은 메시지를 파싱 해서 사용하면 됩니다. data를 출력해 보면 웹에서 넘겨받은 정보를 모두 확인해 보실 수 있습니다. 

 

 보시면 WKScriptMessageHandler를 채택하는 모습을 볼 수 있는데, 웹킷을 초기 설정할 때 핸들러를 add를 했다면 같이 해주어야 하는 작업입니다.

 

 이렇게 하면 기본적으로 다음(카카오) 주소 검색 API를 사용해서 웹에서 앱으로 주소를 가지고 오는 기본적인 작업은 완료되었습니다. 이제 각자 입맛에 맞게 코드를 수정하여 좀 더 나은 처리 방식을 사용하시면 될 것 같습니다.

 

반응형