차량 준비

리스너 설정

Driver SDK를 초기화하고 GMTDDeliveryDriverAPI 인스턴스를 만든 후 이벤트 리스너를 설정하여 Fleet Engine 및 백엔드로 전송된 차량 업데이트의 성공 또는 실패를 모니터링할 수 있습니다. 이러한 리스너는 백엔드와의 통신이 실패할 경우 드라이버에 알리는 등 드라이버 앱 내에서 작업을 트리거할 수 있습니다.

차량 업데이트 이벤트 수신 대기

운전자가 운전자 앱에서 위치 업데이트를 사용 설정하면 Driver SDK가 GMTDDeliveryVehicleReporter 클래스를 통해 일반 차량 업데이트를 Fleet Engine 및 고객 백엔드에 전송합니다. GMTDVehicleReporterListener 프로토콜을 설정하여 앱이 업데이트 이벤트에 응답하도록 할 수 있습니다.

GMTDVehicleReporterListener를 사용하면 다음 이벤트를 처리할 수 있습니다.

  • vehicleReporter:didSucceedVehicleUpdate

    백엔드 서비스가 차량 위치 및 상태 업데이트를 성공적으로 수신했다고 드라이버 앱에 알립니다.

  • vehicleReporter:didFailVehicleUpdate:withError

    리스너에 차량 업데이트 실패를 알립니다. 드라이버에 위치 업데이트가 사용 설정되어 있는 한 GMTDDeliveryVehicleReporter 클래스는 계속해서 최신 데이터를 Fleet Engine에 전송합니다.

다음 예는 이러한 이벤트를 처리하도록 GMTDVehicleReporterListener를 설정하는 방법을 보여줍니다.

Swift

import GoogleRidesharingDriver

private let providerID = "INSERT_YOUR_PROVIDER_ID"

class SampleViewController: UIViewController, GMTDVehicleReporterListener {
  private let mapView: GMSMapView

  override func viewDidLoad() {
    // Assumes you have implemented the sample code up to this step.
    deliveryDriverAPI.vehicleReporter.add(self)
  }

  func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {
    // Handle update succeeded.
  }

  func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, didFail vehicleUpdate: GMTDVehicleUpdate, withError error: Error) {
    // Handle update failed.
  }
}

Objective-C

SampleViewController.h
@interface SampleViewController : UIViewController<GMTDVehicleReporterListener>
@end

SampleViewController.m
#import "SampleViewController.h"
#import "SampleAccessTokenProvider.h"
#import <GoogleRidesharingDriver/GoogleRidesharingDriver.h>

static NSString *const PROVIDER_ID = @"INSERT_YOUR_PROVIDER_ID";

@implementation SampleViewController {
 GMSMapView *_mapView;
}

- (void)viewDidLoad {
  // ASSUMES YOU IMPLEMENTED HAVE THE SAMPLE CODE UP TO THIS STEP.
  [delivervehicleReporter addListener:self];
}

- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {
  // Handle update succeeded.
}

- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {
  // Handle update failed.
}

@end

위치 업데이트 사용 설정

위치 업데이트를 사용 설정하려면 GMTDDeliveryVehicleReporter의 드라이버 앱에서 locationTrackingEnabledYES로 설정합니다. 그러면 GMTDDeliveryVehicleReporter 클래스가 자동으로 위치 업데이트를 Fleet Engine에 전송합니다. 또한 GMSNavigatorsetDestinations를 통해 대상이 설정된 경우 탐색 모드에 있으면 GMTDDeliveryVehicleReporter 클래스가 경로 및 도착 예정 시간 업데이트를 자동으로 전송합니다.

Driver SDK는 운전자의 현재 내비게이션 경로와 일치하도록 경로를 설정합니다. 정확한 위치 업데이트를 위해 -setDestinations:callback:의 경유지를 Fleet Engine의 목적지와 일치하도록 설정합니다.

다음 예는 위치 업데이트를 사용 설정하는 방법을 보여줍니다.

Swift

import GoogleRidesharingDriver

private let providerID = "INSERT_YOUR_PROVIDER_ID"

class SampleViewController: UIViewController, GMTDVehicleReporterListener {
  private let mapView: GMSMapView

  override func viewDidLoad() {
    // Assumes you have implemented the sample code up to this step.
    deliveryDriverAPI.vehicleReporter.locationTrackingEnabled = true
  }
}

Objective-C

SampleViewController.m
#import "SampleViewController.h"
#import "SampleAccessTokenProvider.h"
#import <GoogleRidesharingDriver/GoogleRidesharingDriver.h>

static NSString *const PROVIDER_ID = @"INSERT_YOUR_PROVIDER_ID";

@implementation SampleViewController {
 GMSMapView *_mapView;
}

- (void)viewDidLoad {
  // ASSUMES YOU HAVE IMPLEMENTED THE SAMPLE CODE UP TO THIS STEP.
  deliveryDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}

@end

(선택사항) 업데이트 간격 설정

기본적으로 locationTrackingEnabledYES로 설정하면 드라이버 SDK가 10초 간격으로 Fleet Engine에 위치 업데이트를 전송합니다. locationUpdateInterval를 사용하여 업데이트 간격을 최소 업데이트 간격인 5초 또는 최대 60초로 변경할 수 있습니다. 더 자주 업데이트하면 요청 및 오류가 느려질 수 있습니다.