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