자주 묻는 질문(FAQ)

제품 정보

문제

네트워크

데이터

UI 맞춤설정

라우팅

시뮬레이터

워크플로

제품 정보

앱은 각 드라이버가 동의해야 하는 Navigation SDK 서비스 약관 고지가 포함된 대화상자를 구현해야 합니다. 운전자는 이 대화상자를 통해 서비스 약관에 동의할 수 있습니다. 이용약관 텍스트 파일은 탐색 SDK와 함께 제공됩니다.
Android에서는 NavigationApi.showTermsAndConditionsDialog 메서드를 사용하여 용어가 포함된 대화상자를 표시합니다.
iOS에서는 GMSNavigationServices.showTermsAndConditionsDialogIfNeededWithCompanyName를 호출합니다.
Google 모바일 지도에서 지원되는 모든 언어는 자동으로 탐색 SDK에서 사용할 수 있습니다. 기기에 기본 시스템 언어가 있고 앱은 이 설정을 변경할 수 없습니다. 그러나 앱에서 70개가 넘는 언어에 액세스할 수 있습니다.

예. Android에서 LocationListener는 시작되면 백그라운드에서 계속 실행됩니다. 앱이 계속해서 도로에 맞춰 위치를 맞추고 방위를 유지합니다.

iOS에서 백그라운드에서 위치 및 방위 위치 업데이트를 계속 수신하려면 도로 스냅을 구현하고 allowsBackgroundLocationUpdatesYES로 설정합니다.

예. 경로가 만들어지거나 변경되면 RouteChangeListener에서 다중선을 제공합니다.

아니요. Navigation SDK를 사용하면 기기에 Google 지도 모바일을 설치할 필요가 없습니다.
아니요. Navigation SDK는 현재 이 기능을 제공하지 않습니다.
예. 기본적으로 통행 방향을 사용할 수 있으며 표시됩니다.

문제

Xcode 12에서 앱은 시뮬레이터용으로 올바르게 빌드되지 않습니다. 이 문제를 해결하려면 어떻게 해야 하나요?

이 문제를 해결하려면 Xcode 프로젝트 빌드 설정을 열고 'iOS 시뮬레이터' 빌드의 경우에만 Excluded Architecturesarm64를 추가합니다.

자세한 내용은 다음 StackOverflow 스레드를 참고하세요.

네트워크

Navigation SDK는 연결 상태가 좋지 않은 경우 어떻게 처리하나요?
Navigation SDK는 각 여정의 경로를 사전 캐시합니다. 사전 캐시된 정보에는 15~20분 동안의 경로 정보와 운전자가 경로를 벗어날 경우 사용할 수 있는 대체 경로가 포함됩니다. Navigation SDK는 기기 GPS 및 센서를 사용하여 위치를 대략적으로 계산합니다.
오프라인 모드를 사용할 수 있나요?
아니요. Navigation SDK는 현재 오프라인 모드를 제공하지 않습니다. 하지만 SDK는 여정에 관해 사전 캐시된 정보를 제공합니다.

데이터

경로를 시작하기 전에 여정의 모든 정류장/목적지를 검색할 수 있나요?

예. Android에서 경로의 경로를 가져오려면 Navigator.getRouteSegments()를 호출합니다.

iOS에서 GMSNavigator.routeLegs(read)를 호출합니다.

경로 시작 시에 세부 경로 안내를 사용할 수 있나요?
예. Navigation SDK는 경로 세그먼트 목록을 제공합니다. 또한 운전자는 헤더의 경로 카드를 스와이프하여 각 조작을 확인할 수도 있습니다.
도착예정시간은 앱 사용자에게 어떻게 전달되나요?

Android에서 앱 사용자에게 도착예정시간 정보를 제공하려면 다음 단계를 따르세요.

  1. Navigator.getTimeAndDistanceList()를 사용하여 모든 경유지의 시간과 거리를 가져옵니다.
  2. 드라이버 ETA와 마찬가지로 현재 이 정보를 클라이언트 애플리케이션에 전달합니다.

iOS에서는 다음 단계에 따라 앱 사용자에게 도착예정시간 정보를 제공합니다.

  1. Navigator.getRouteSegments()를 사용하여 여정의 구간을 검색합니다.
  2. 각 여정 구간에 대해 GMSNavigator.timeToNextDestination를 호출합니다.
  3. 드라이버 ETA와 마찬가지로 현재 시간 정보를 클라이언트 애플리케이션에 전달합니다.
내비게이션이 포그라운드에 있지 않은 경우 RoadSnappedLocationProvider를 사용하여 운전자의 현재 스냅된 위치를 가져올 수 있나요?

예. Android에서 RoadSnappedLocationProvider는 기본적으로 백그라운드에서 실행됩니다.

iOS에서 백그라운드에서 계속 탐색이 실행되도록 하려면 GMSRoadSnappedLocationProviderListener의 리스너를 구현하고 속성 allowsBackgroundLocationUpdatesTRUE로 설정합니다.

Navigation SDK가 지오펜싱을 지원하나요?

아니요. 탐색 컨텍스트에서 remainingTimeOrdistanceChangeListener는 간단한 지오펜싱에 비해 이점이 있습니다. 지오펜싱이 도로의 도형을 고려하지 않을 수 있으며 운전자가 탐색하는 정확한 지점의 중앙에 배치되지 않을 수 있습니다.

remainingTimeOrdistanceChangeListener를 사용하여 이 기능의 근사치를 구할 수 있습니다.

  1. 콜백 빈도를 결정하는 기준점을 설정합니다.
  2. 목적지까지 남은 거리를 확인하세요.

예를 들어 임곗값을 100m로 설정하면 목적지까지의 거리가 100m씩 변경될 때 콜백이 수신됩니다. 거리가 멀어지면 이 임곗값을 더 작은 값으로 업데이트하고 콜백을 더 자주 수신할 수 있습니다. 그런 다음 남은 거리를 검사하여 승차/하차 위치에 충분히 가까운지 확인합니다.

iOS에서 GMSNavigatorListener.didUpdateRemainingDistance 리스너를 구현하여 알림 간의 거리를 관리합니다.

내비게이션 앱이 백그라운드에 있을 때 알림을 사용 중지할 수 있나요?

예. Android에서는 Navigator.setHeadsUpNotificationEnabled를 사용하여 알림을 제어합니다. 이 메서드에는 부울 인수가 있습니다. FALSE는 알림을 사용 중지하고 TRUE는 알림을 사용 설정합니다.

iOS에서 GMSRoadSnappedLocationProvider.allowsBackgroundLocationUpdates를 NO로 설정하여 도로에 맞춘 위치의 백그라운드 알림을 사용 중지합니다.

다른 위치 알림의 백그라운드 처리를 사용 중지하려면 GMSNavigator.sendsBackgroundNotifications(NO)를 호출합니다.

UI 맞춤설정

최적 경로 옵션에 색상을 지정할 수 있나요?
아니요. 현재 특정 경로 옵션에 색 구분은 지원되지 않습니다.
Navigation SDK가 최종 목적지의 도착예정시간을 표시할 수 있나요?

예. Android에서는 다음 메서드를 사용합니다.

  1. Navigator.getTimeAndDistanceList()를 사용하여 모든 경유지의 시간과 거리를 가져옵니다.
  2. NavigationFragment.setEtaCardEnabled(false)를 사용하여 현재 경유지의 도착예정시간을 숨깁니다.
  3. 최종 도착예정시간을 렌더링합니다.

iOS에서는 다음을 사용합니다.

  1. GMSNavigator.routeLegs(read)를 호출합니다.
  2. 마지막 구간과 함께 GMSNavigator.timeToNextDestination를 호출합니다.
  3. MSMapView.settings.navigationFooterEnabled=NO를 FALSE로 사용하여 현재 경유지의 도착예정시간을 숨깁니다.
  4. 최종 도착예정시간을 렌더링합니다.
도착예정시간 업데이트를 숨기려면 어떻게 해야 하나요?

다음 방법으로 도착예정시간 카드를 사용 중지할 수 있습니다.

  • Android에서는 navigationView.setEtaCardEnabled(false)를 사용합니다.
  • iOS에서는 GMSMapView.settings.navigationFooterEnabled=NO를 사용합니다.
머리글 및 바닥글 카드에 어떤 UI 맞춤설정을 사용할 수 있나요?

Android에서는 StylingOptions를 사용하여 배경 색상 스타일을 설정합니다. 머리글과 바닥글을 숨기거나 표시하려면 NavigationFragmentsetHeaderEnabledsetFooterEnabled 멤버 함수를 사용합니다.

iOS에서는 GMSMapView.settings.navigationHeaderPrimaryBackgroundColor를 사용하여 배경 색상 스타일을 설정합니다. 머리글과 바닥글을 숨기거나 표시하려면 GMSUISettingsnavigationFooterEnablednavigationHeaderEnabled 속성을 사용합니다.

라우팅

운전자에게 특정 경로를 제공하거나 대체 경로를 삭제할 수 있나요?
아니요. 기본적으로 여러 경로가 제공되며 가장 빠른 경로가 우선순위를 갖습니다. 요청에 '고속도로 및 유료도로 제외'와 같은 환경설정을 추가하여 기본 경로를 변경할 수 있습니다. 경유지를 추가하면 경로에도 영향을 줍니다.
기본 대상 위치와 다른 대상 위치 라벨을 앱 사용자에게 표시할 수 있나요?

예. Android에서 목적지와 위도/경도의 맞춤 제목을 사용하여 Marker를 만듭니다. Navigation SDK는 NavigationMap에 맞춤 제목과 좌표를 표시합니다.

iOS에서는 대상의 GMSMarker를 만들고 표시합니다.

Navigation SDK를 사용하여 정의된 경로에서의 편차를 추적할 수 있나요?

예. Android에서는 Navigator.setRouteChangedListener를 사용하여 경로가 변경되거나 새 경로가 권장될 때 알림을 받습니다.

  1. Navigator.setRouteChangedListener 메서드를 사용하여 경로를 따라 기기 위치를 확인하는 리스너를 등록합니다.
  2. 콜백 이벤트 핸들러 onRouteChanged에 코드를 추가합니다.
    • 업데이트된 도착예정시간과 거리 정보가 포함된 메시지를 앱 사용자에게 보냅니다.
    • 기기의 위치를 추적합니다.
    • [선택사항] 운전자가 규정된 경로에서 벗어날 때 처리하도록 앱에서 필요로 하는 다른 기능을 추가합니다.

iOS에서는 GMSNavigator 및 리스너를 사용하여 경로가 변경되거나 새 경로가 권장될 때 알림을 받습니다.

  1. 지도의 뷰 컨트롤러에서 GMSNavigatorListener 프로토콜 및 GMSRoadSnappedLocationProviderListener 프로토콜을 구현합니다.
  2. GMSNavigatorListener.navigatorDidChangeRoute를 구현합니다.
  3. GMSNavigatorrouteLegscurrentRouteLeg 속성을 사용하여 새 경로에 액세스합니다.
운전자가 경로를 완료하지 않고 내비게이션을 종료할 수 있나요?

예. Android에서는 Navigator.stopGuidance() 메서드를 호출하여 탐색을 중지합니다.

iOS에서 GMSNavigator.clearDestinations를 호출합니다.

시뮬레이터

시뮬레이터가 경로 변경을 지원하나요?

예. Android에서는 simulateLocationsAlongNewRoute를 호출하여 경로 변경이 포함된 여정을 시뮬레이션합니다. simulateLocationsAlongExistingRoute 메서드는 기존 경로의 변경사항을 무시합니다.

iOS에서는 GMSLocationSimulator.simulateAlongNewRouteToDestinations를 사용하여 경로 변경이 포함된 여정을 시뮬레이션합니다. 경로 변경이 없을 것으로 예상되는 경우 GMSLocationSimulator.simulateLocationsAlongExistingRoute 또는 GMSLocationSimulator.simulateAlongNewRouteToDestinations를 사용할 수 있습니다.

워크플로

탐색 프래그먼트가 포함된 활동을 닫은 후 알림을 닫으려면 어떻게 해야 하나요?

내비게이션 알림은 내비게이션 중에 활동이 닫혀 있을 때 계속 표시됩니다. 차량이 목적지에 도착하면 내비게이션이 중지되고 알림이 사라집니다.

알림 클릭을 처리하려면 Navigator.startGuidance(intent resumeIntent)를 사용합니다. resume intent는 앱 사용자가 알림을 클릭하면 실행됩니다. 일반적으로 Navigator.startguidance(getIntent())는 앱 사용자가 알림을 클릭하면 활동을 리콜하는 기본 활동에서 호출됩니다.