맞춤 탐색이란 무엇인가요?

맞춤 탐색 환경은 백그라운드 프로세스로만 탐색을 사용하여 회전 안내를 완전히 제거하는 앱부터 탐색기를 실행하는 기기와 별도의 화면에 고도로 맞춤설정된 안내를 투영하는 앱에 이르기까지 모든 것을 의미할 수 있습니다.

맞춤 탐색 환경이란 무엇인가요?

  • 내비게이션 시작 - 내비게이션 세션을 만듭니다. Google 탐색 환경과 마찬가지로 맞춤 탐색 환경에도 여전히 탐색 인스턴스를 만들고 대상을 설정해야 합니다. 그러나 맞춤설정된 탐색 환경을 사용하면 먼저 GMSNavigationServices를 사용하여 탐색 세션을 설정하여 이렇게 할 수 있습니다. 탐색 세션은 뷰 컨트롤러 또는 뷰 컨트롤러 없이 작동할 수 있는, 상태 보유 비 UI 객체입니다.

    데모 보기: Navigation SDK의 다운로드에는 표준 탐색을 통한 세부 경로 안내 간에 도로 다중선을 따라 이동하는 기기 위치만 표시하는 내비게이션 환경으로 전환하는 내비게이션 환경의 예를 확인할 수 있는 데모가 포함되어 있습니다.

  • 사용자가 제공하는 활성 내비게이션. Google에서 제공하는 탐색 환경과 맞춤 탐색 환경의 또 다른 주요 차이점은 다음과 같습니다. Navigation SDK의 기본 제공 이벤트 관리자에게 안내를 전달하는 대신 세부 경로 안내 피드를 사용 설정하고 GMSNavigatorListener를 통해 이벤트 핸들러를 구현합니다. 이렇게 하면 환경이 내비게이션 이벤트 수신 대기에 설명된 이벤트에 응답할 수 있습니다.

  • 내비게이션 종료: 사용자가 제공. Google 탐색 환경과 마찬가지로 맞춤 탐색을 사용하려면 앱 환경에 가장 적합한 방식으로 탐색을 종료해야 합니다.

다음 표에서는 몇 가지 맞춤 탐색 시나리오를 설명합니다.

예시 시나리오

대략적인 단계

이륜차와 같은 소형 기기의 경우 텍스트 전용 운전자 안내를 제공해야 합니다.

탐색기를 만들고 세부 경로 안내를 소형 화면 기기의 데이터 피드로 설정합니다. 이때 탐색기가 운전자의 직접 시야 외부에서 운전자의 휴대전화에서 실행됩니다. 세부 경로 안내 데이터 피드 사용을 참조하세요.

앱을 사용하는 운전자가 대부분의 여정에 대한 개요 지도를 보고 도시의 도로에 대한 최소한의 세부 경로 안내만 보기를 원합니다.

앱은 운전자가 목적지 및 이동 모드에 대한 탐색기의 설정을 번갈아 하지 않고도 필요에 따라 운전자가 Google 내비게이션 환경을 시작하고 종료할 수 있도록 해야 합니다.

모빌리티 서비스 고객의 경우: 운전자는 이미 익숙한 경로를 따라 이동하는 경우가 많으며 아무런 안내도 필요하지 않지만, 차량 관리 시스템에서 배송 또는 이동을 관리할 수 있는 방법이 필요합니다.

탐색기를 설정합니다. 목적지를 설정하고 위치 업데이트를 받으세요. 앱에 Driver SDK를 통합합니다. 자세한 내용은 주문형 차량 공유 및 배송용 Driver SDK 시작하기 또는 Last Mile Fleet 솔루션을 참조하세요.

맞춤 안내 만들기

이 섹션에서는 맞춤설정된 안내를 만들기 위해 따르는 대략적인 단계를 설명합니다.

이 프로세스는 다음과 같이 경로 탐색에 설명된 프로세스와 다릅니다.

  • 먼저 탐색 세션을 독립적으로 설정하고 뷰 컨트롤러를 호출하는 대신 세션을 통해 탐색기 인스턴스를 가져옵니다.
  • 탐색 이벤트에 응답하고 탐색 이벤트에 응답하도록 이벤트 리스너를 설정합니다.

  1. GMSNavigationService.createNavigationSession를 사용하여 내비게이션 세션을 만들고 setDestination 호출로 내비게이션을 시작합니다. Google 내비게이션 환경에서 내비게이션 지도뷰를 통해 탐색기를 호출하는 경우 GMSNavigationServices는 UI 인스턴스로부터 독립적으로 탐색 세션의 이벤트 스트림을 제어하고 수신합니다. 즉, UI 없이 실행하거나 모든 UI 기반 환경으로 전달될 수 있습니다. 이 방법을 사용하면 탐색 세션은 마지막 참조가 삭제될 때까지 앱에서 계속 실행됩니다.
  2. 도로에 맞춘 위치 정보 제공자를 설정합니다. 경로를 따라 파란색 점이 있는 탐색 뷰를 표시하는 등 앱에서 지속적으로 위치를 모니터링하도록 하려면 위치 정보 제공자를 사용하세요.
  3. GMSNavigatorListener 프로토콜을 구현하여 상세한 세부 경로 안내를 위한 리스너를 설정합니다. 그런 다음 이 정보를 맞춤 탐색 환경에 필요한 정보로 변환합니다. 예를 들면 다음과 같습니다.
    1. 간단한 길찾기 화면 전송을 위한 텍스트 전용 필드를 구현합니다.
    2. 자체 UI용 필드를 디자인하고 채웁니다.
  4. 내비게이션 시뮬레이터를 설정합니다. 이는 개발 및 테스트에 필요합니다.

독립적인 탐색 세션 만들기

다음 데모 코드 스니펫은 뷰 컨트롤러와 독립적으로 설정된 탐색을 보여줍니다. 그런 다음 현재 도로에 맞춰진 위치를 표시하도록 구성된 개요 지도를 추가합니다.

// Create the navigation session.

 _navigationSession = [GMSNavigationServices createNavigationSession];
 GMSRoadSnappedLocationProvider *roadSnappedLocationProvider =
     _navigationSession.roadSnappedLocationProvider;
 [roadSnappedLocationProvider startUpdatingLocation];
 GMSNavigator *navigator = _navigationSession.navigator;
 [navigator addListener:self];
 navigator.voiceGuidance = GMSNavigationVoiceGuidanceSilent;
 navigator.sendsBackgroundNotifications = NO;
 _navigationSession.started = YES;
​​ [navigator setDestinations:@[ destination ]
                   callback:^(GMSRouteStatus routeStatus) {
                      // …handle changes in route status.
                    }];

 // Add an overview map.
 _mapView = [[GMSMapView alloc] initWithFrame:CGRectZero];
 [self.mainStackView addArrangedSubview:_mapView];
 [self.mainStackView setNeedsLayout];
 _mapView.settings.compassButton = YES;
 _mapView.delegate = self;
 _mapView.myLocationEnabled = YES;
 _mapView.roadSnappedMyLocationSource = roadSnappedLocationProvider;

맞춤 환경에서 Google 환경으로 탐색 전달

이 코드 스니펫은 앱을 통해 사용자가 맞춤 탐색 환경에서 Google 내비게이션 환경에 들어갈 수 있는 방법을 보여줍니다. 이 코드 스니펫은 앱에서 지도를 공유하는 동안 전환하는 방법도 보여줍니다.

`UIButton *button = [UIButton buttonWithType:UIButtonTypePlain`];

[`button addTarget:self action:@selector(didTapEnterGoogleNavigationButton:)
forControlState:[_directionsButton addTarget:self`];

`…`

[`_mapView enableNavigationWithSession:_navigationSession`];