iOS 에서 우편번호를 가져오는 가장 Gorgeous 한 방법.

iOS 에서 우편번호뷰를 개발하는 여러가지 방법들이 있습니다.


그리고

한번 찾아보면 아시겠지만 다음우편번호서비스를 제외하고 대부분의 서비스는 사용하는데 수고가 많이 듭니다.

그래서

안드로이드 앱과의 싱크 등 여러 이유로 다음우편번호서비스 를 사용해 개발하기로 결정 되었습니다.

Guide Page 를 보시면 자세한 사용방법이 나와 있습니다.

일단 개발을 시작해 보죠.

  • 제가 사용한 daum api html file code 입니다.

JavaScript 와 iOS 간의 통신이 필요해 보입니다.

  • iOS Single View Application을 만듭니다.
프로젝트 생성
싱글 뷰 프로젝트 생성
  • Storyboard 는 이렇게 만들어 줍니다.
스토리보드
소스코드

이런느낌;;

설명을 추가해 볼게요.

  • 이 함수가 message handler 를 추가하는 일을 합니다.
  • 위 JavaScript 함수는 등록된 message handler로 iOS에 데이터를 post 합니다.
  • 이제 message handler 를 추가했으니 JavaScript가 보낸 데이터를 받아야죠.
  • 프로토콜을 추가합니다.
  • 데이터를 받았을 때 Invoke되는 메서드를 추가합니다.
  • Guide Page에 나와있는 코드를 커스텀 한 후 사용해 html 파일을 웹뷰로 로딩 시켰습니다.

문제1.

검색을 하고 주소 선택을 했는데 데이터가 오지 않ㅇ ㅏ …;;;;;; 이런!!!

우편번호서비스질문게시판을 찾아봤어요.

원인
다음우편번호서비스의 경우 도메인정보를 필요로 하기 때문에 도메인 정보가 없으면 주소를 선택했을 때 주소값을 받을 수 없습니다. 앱에서 정적으로 html 파일을 웹뷰로 보여줬을 때는 도메인 정보가 없기 때문에 주소값을 받을 수 없는 것이죠.

혹시나 해서 계속 방법을 찾고 시도를 해봤지만 정적으로 보여줬을 때는 데이터가 오지 않았어요. 혹시 이 글을 보시는 분들중에 방법을 아시는 분이 계시면 꼭 알려주세요. 부탁부탁

문제2.

서버에서 웹페이지 제공이 필요해 보입니다. 그런데 한번 생각해보죠. 우편번호 서비스를 위해 서버까지 일해야 한다? 뭔가 일이 커지는것 같지 않나요?

서버개발자께서도 긴 휴가중이셔서 돌아오실 때까지 기다릴 수도 없는 상황이었어요.

원인
우편번호뷰를 위해서 서버와의 Dependency가 생기는데 이건 좀 바람직하지 않아요. 동의하시나요?

해결방법

웹페이지를 만들어야 하는 것은 지금상황에서 어쩔 수 없어 보입니다. 그렇다면 문제는 얼마나 쉽고 안전하게 웹 페이지를 만들것이냐 인거죠.

고민끝에 찾아낸 방법은 github page 를 이용해보는거 였어요.

개발자가 github 계정이 없으면 안되겠죠?

  1. github에 repository를 하나 만듭니다. 이름은 postcode 가 좋겠네요.

2. postcode repository에

/docs/index.html

파일을 만들고 index.html 파일에는 우리가 사용할 코드를 넣어줍니다.

3. postcode repository 설정에서 아래 이미지와 같이 설정해 줍니다.

4. <username>.github.io/postcode/ 로 이동해 봅니다.

4. iOS 에서도 사용해봅니다.

load webview
검색
Problem was resolved.

project link


쉽죠?
저도 이 방법이 완벽하다고 생각하지 않습니다. 훨씬 나이스한 방법도 있을거라고 생각됩니다. 하지만 제가 생각할 수 있는 가장 최적의 방법이라 느껴지네요.
live long and prosper