차량 준비

리스너 설정

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

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

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

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

  • vehicleReporter:didSucceedVehicleUpdate

    백엔드 서비스가 차량 위치 및 상태 업데이트를 수신했음을 Driver 앱에 알립니다.

  • 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로 설정하면 Driver SDK는 10초 간격으로 위치 업데이트를 Fleet Engine에 전송합니다. locationUpdateInterval를 사용하여 업데이트 간격을 최소 5초 또는 최대 60초로 변경할 수 있습니다. 업데이트를 더 자주 실행하면 요청 속도가 느려지고 오류가 발생할 수 있습니다.