리스너 설정
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의 운전자 앱에서 locationTrackingEnabled를 YES로 설정합니다. 그러면 GMTDDeliveryVehicleReporter 클래스가 자동으로 Fleet Engine으로 위치 업데이트를 전송합니다. 또한 GMSNavigator가 탐색 모드에 있는 경우(setDestinations를 통해 목적지가 설정된 경우) GMTDDeliveryVehicleReporter 클래스는 자동으로 경로 및 도착 예정 시간 업데이트를 전송합니다.
Driver SDK는 운전자의 현재 탐색 경로와 일치하도록 경로를 설정합니다. 정확한 위치 업데이트를 보장하려면 Fleet Engine의 목적지와 일치하도록 -setDestinations:callback:에서 경유지를 설정합니다.
다음 예는 위치 업데이트를 사용 설정하는 방법을 보여줍니다.
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
(선택사항) 업데이트 간격 설정
기본적으로 locationTrackingEnabled를 YES로 설정하면 Driver SDK는 10초 간격으로 Fleet Engine에 위치 업데이트를 전송합니다. locationUpdateInterval을 사용하여 업데이트 간격을 최소 5초 또는 최대 60초로 변경할 수 있습니다. 업데이트가 더 자주 발생하면 요청이 느려지고 오류가 발생할 수 있습니다.