이 섹션에서는 이동을 위해 차량을 준비하는 방법을 보여줍니다. 백엔드에서 차량을 이동에 일치시키려면 먼저 다음 단계를 각각 완료해야 합니다.
리스너 설정
Driver SDK를 초기화하고 GMTDRidesharingDriverAPI 인스턴스를 만든 후 이벤트 리스너를 설정하여 Fleet Engine 및 백엔드로 전송된 차량 업데이트의 성공 또는 실패를 모니터링할 수 있습니다. 이러한 리스너는 백엔드와의 통신이 실패할 경우 운전자에게 알리는 등 운전자 앱 내에서 작업을 트리거할 수 있습니다.
차량 업데이트 이벤트 수신 대기
운전자가 운전자 앱에서 위치 업데이트를 사용 설정하면 Driver SDK는 GMTDVehicleReporter 클래스를 통해 Fleet Engine 및 고객 백엔드에 정기적인 차량 업데이트를 전송합니다. GMTDVehicleReporterListener 프로토콜을 설정하여 앱이 업데이트 이벤트에 응답하도록 할 수 있습니다.
GMTDVehicleReporterListener를 사용하면 다음 이벤트를 처리할 수 있습니다.
vehicleReporter:didSucceedVehicleUpdate백엔드 서비스가 차량 위치 및 상태 업데이트를 수신했음을 Driver 앱에 알립니다.
vehicleReporter:didFailVehicleUpdate:withError차량 업데이트가 실패했음을 리스너에 알립니다. 운전자가 위치 업데이트를 사용 설정한 경우
GMTDVehicleReporter클래스는 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.
ridesharingDriverAPI.vehicleReporter.add(self)
}
func vehicleReporter(_ vehicleReporter: GMTDVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {
// Handle update succeeded.
}
func vehicleReporter(_ vehicleReporter: GMTDVehicleReporter, 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 have implemented the sample code up to this step.
[ridesharingDriverAPI.vehicleReporter addListener:self];
}
- (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {
// Handle update succeeded.
}
- (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {
// Handle update failed.
}
@end
차량 위치 업데이트 수신 대기
Navigation SDK는 GMSRoadSnappedLocationProvider 클래스를 통해 Driver SDK에 위치 업데이트를 제공합니다. 이러한 업데이트를 수신하려면 GMTDVehicleReporter를 리스너로 설정해야 합니다.
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.
if let roadSnappedLocationProvider = mapView.roadSnappedLocationProvider {
roadSnappedLocationProvider.add(ridesharingDriverAPI.vehicleReporter)
roadSnappedLocationProvider.startUpdatingLocation()
}
}
}
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 have implemented the sample code up to this step.
[_mapView.roadSnappedLocationProvider addListener:ridesharingDriverAPI.vehicleReporter];
[_mapView.roadSnappedLocationProvider startUpdatingLocation];
}
@end
위치 업데이트 사용 설정
위치 업데이트를 사용 설정하려면 운전자 앱의 GMTDVehicleReporter에서 locationTrackingEnabled를 true로 설정합니다. 그러면 GMTDVehicleReporter 클래스가 위치 업데이트를 Fleet Engine에 자동으로 전송합니다. Fleet Engine과 고객 백엔드 서비스가 차량을 이동에 일치시키고 할당한 후 GMSNavigator가 탐색 모드에 있을 때(setDestinations를 통해 목적지가 설정된 경우) GMTDVehicleReporter 클래스는 경로 업데이트를 자동으로 전송합니다.
Driver SDK는 운전자의 현재 내비게이션 경로와 일치하도록 경로를 설정합니다. 정확한 위치 업데이트를 위해 setDestinations의 경유지를 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.
ridesharingDriverAPI.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.
ridesharingDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}
@end
업데이트 간격 설정
기본적으로 locationTrackingEnabled를 true로 설정하면 Driver SDK는 10초 간격으로 Fleet Engine에 이동 및 차량 업데이트를 전송합니다. locationUpdateInterval를 사용하여 업데이트 간격을 최소 5초 또는 최대 60초로 변경할 수 있습니다. 업데이트를 더 자주 실행하면 요청이 느려지고 오류가 발생할 수 있습니다.
차량 상태를 온라인으로 설정
위치 업데이트를 사용 설정한 후 차량 상태를 ONLINE로 설정하여 Fleet Engine에서 검색어에 차량을 사용할 수 있도록 합니다.
다음 예는 차량 상태를 ONLINE로 설정하는 방법을 보여줍니다. 자세한 내용은 updateVehicleState을 참고하세요.
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.
ridesharingDriverAPI.vehicleReporter.update(.online)
}
}
Objective-C
#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.
[ridesharingDriverAPI.vehicleReporter
updateVehicleState:GMTDVehicleStateOnline];
}
@end