NaviApi

카카오내비 API 호출을 담당하는 클래스입니다.

원하는 목적지 정보를 입력하여 NaviLocation 객체를 만들고 길안내 API를 호출할 수 있습니다. 사용하는 좌표계를 변경하거나 각종 옵션을 설정하려면 NaviOptions 를 생성하고 해당 API options 파라미터로 함께 전달합니다. 경유지가 있다면 경유지에 대한 NaviLocation 객체를 추가로 만들고 배열에 담아 해당 API viaList 파라미터로 전달합니다.

아래는 간단한 카카오내비 길안내 예제입니다.

let destination = NaviLocation(name: "카카오판교오피스", x: 321286, y: 533707)

NaviApi.shared.navigate(destination: destination)
    .subscribe(onSuccess: {
        print("성공")
    }, onError: { (error) in
        print(error)
    })
    .disposed(by: self.disposeBag)
  • 간편하게 API를 호출할 수 있도록 제공되는 공용 싱글톤 객체입니다.

  • 카카오내비 앱 실행이 가능한지 확인합니다.

    내부적으로 UIApplication.shared.canOpenURL() 메소드를 사용합니다. 카카오내비 길 안내를 위한 커스텀 스킴은 kakaonavi-sdk이며 이 메소드를 정상적으로 사용하기 위해서는 LSApplicationQueriesSchemes에 해당 스킴이 등록되어야 합니다. 등록되지 않은 상태로 메소드를 호출하면 카카오내비가 설치되어 있더라도 항상 false를 반환합니다.

    // info.plist
    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>kakaonavi-sdk</string>
    </array>
    
  • 카카오내비로 장소 공유를 실행합니다.

  • 카카오내비로 길안내를 실행합니다.

  • 웹 길안내 URL을 얻습니다. 획득한 URL을 브라우저에 요청하면 카카오내비가 없는 환경에서도 길안내를 받을 수 있습니다.

    Important

    외부 브라우저로 열지 않고 웹뷰를 사용할 경우 추가 설정이 필요합니다. 사용자의 위치정보에 접근할 수 있도록 info.plist 파일에 Privacy - Location When In Use Usage Description 항목을 추가해야 합니다.
  • 웹 길안내 URL을 얻습니다. 획득한 URL을 브라우저에 요청하면 카카오내비가 없는 환경에서도 길안내를 받을 수 있습니다.

    Important

    외부 브라우저로 열지 않고 웹뷰를 사용할 경우 추가 설정이 필요합니다. 사용자의 위치정보에 접근할 수 있도록 info.plist 파일에 Privacy - Location When In Use Usage Description 항목을 추가해야 합니다.