이 섹션에서는 차량을 운행에 대비하는 방법을 보여줍니다. 백엔드에서 차량을 여정에 매칭하려면 다음 단계를 모두 완료해야 합니다.
리스너 설정
Driver SDK를 초기화하고 GMTDRidesharingDriverAPI 인스턴스를 만든 후 이벤트 리스너를 설정하여 Fleet Engine과 백엔드로 전송된 차량 업데이트의 성공 또는 실패를 모니터링할 수 있습니다. 이러한 리스너는 백엔드와의 통신이 실패하는 경우 운전자에게 알리는 등 운전자 앱 내에서 작업을 트리거할 수 있습니다.
차량 업데이트 이벤트 수신 대기
운전자가 운전자 앱에서 위치 업데이트를 사용 설정하면 Driver SDK가 GMTDVehicleReporter 클래스를 통해 Fleet Engine과 고객 백엔드에 정기적인 차량 업데이트를 전송합니다. GMTDVehicleReporterListener 프로토콜을 설정하여 업데이트 이벤트에 앱이 응답하도록 할 수 있습니다.
GMTDVehicleReporterListener를 사용하면 다음 이벤트를 처리할 수 있습니다.
차량 업데이트가 실패했음을 리스너에게 알립니다. 드라이버가 위치 업데이트를 사용 설정한 경우 GMTDVehicleReporter 클래스는 계속해서 최신 데이터를 Fleet Engine에 전송합니다.
다음 예에서는 이러한 이벤트를 처리하도록 GMTDVehicleReporterListener를 설정하는 방법을 보여줍니다.
Swift
importGoogleRidesharingDriverprivateletproviderID="INSERT_YOUR_PROVIDER_ID"classSampleViewController:UIViewController,GMTDVehicleReporterListener{privateletmapView:GMSMapViewoverridefuncviewDidLoad(){// Assumes you have implemented the sample code up to this step.ridesharingDriverAPI.vehicleReporter.add(self)}funcvehicleReporter(_vehicleReporter:GMTDVehicleReporter,didSucceedvehicleUpdate:GMTDVehicleUpdate){// Handle update succeeded.}funcvehicleReporter(_vehicleReporter:GMTDVehicleReporter,didFailvehicleUpdate:GMTDVehicleUpdate,withErrorerror:Error){// Handle update failed.}}
Objective-C
/** * SampleViewController.h */@interfaceSampleViewController : UIViewController<GMTDVehicleReporterListener>@end/** * SampleViewController.m */#import "SampleViewController.h"#import "SampleAccessTokenProvider.h"#import <GoogleRidesharingDriver/GoogleRidesharingDriver.h>staticNSString*constPROVIDER_ID=@"INSERT_YOUR_PROVIDER_ID";@implementationSampleViewController{GMSMapView*_mapView;}-(void)viewDidLoad{// Assumes you have implemented the sample code up to this step.[ridesharingDriverAPI.vehicleReporteraddListener:self];}-(void)vehicleReporter:(GMTDVehicleReporter*)vehicleReporterdidSucceedVehicleUpdate:(GMTDVehicleUpdate*)vehicleUpdate{// Handle update succeeded.}-(void)vehicleReporter:(GMTDVehicleReporter*)vehicleReporterdidFailVehicleUpdate:(GMTDVehicleUpdate*)vehicleUpdatewithError:(NSError*)error{// Handle update failed.}@end
차량 위치 업데이트 수신 대기
Navigation SDK는 GMSRoadSnappedLocationProvider 클래스를 통해 Driver SDK에 위치 업데이트를 제공합니다. 이러한 업데이트를 수신하려면 GMTDVehicleReporter를 리스너로 설정해야 합니다.
Swift
importGoogleRidesharingDriverprivateletproviderID="INSERT_YOUR_PROVIDER_ID"classSampleViewController:UIViewController,GMTDVehicleReporterListener{privateletmapView:GMSMapViewoverridefuncviewDidLoad(){// Assumes you have implemented the sample code up to this step.ifletroadSnappedLocationProvider=mapView.roadSnappedLocationProvider{roadSnappedLocationProvider.add(ridesharingDriverAPI.vehicleReporter)roadSnappedLocationProvider.startUpdatingLocation()}}}
Objective-C
/** * SampleViewController.h */@interfaceSampleViewController : UIViewController<GMTDVehicleReporterListener>@end/** * SampleViewController.m */#import "SampleViewController.h"#import "SampleAccessTokenProvider.h"#import <GoogleRidesharingDriver/GoogleRidesharingDriver.h>staticNSString*constPROVIDER_ID=@"INSERT_YOUR_PROVIDER_ID";@implementationSampleViewController{GMSMapView*_mapView;}-(void)viewDidLoad{// Assumes you have implemented the sample code up to this step.[_mapView.roadSnappedLocationProvideraddListener:ridesharingDriverAPI.vehicleReporter];[_mapView.roadSnappedLocationProviderstartUpdatingLocation];}@end
위치 업데이트 사용 설정
위치 업데이트를 사용 설정하려면 드라이버 앱에서 GMTDVehicleReporter의 locationTrackingEnabled를 true로 설정합니다. 그러면 GMTDVehicleReporter 클래스가 Fleet Engine에 위치 업데이트를 자동으로 전송합니다. Fleet Engine과 고객 백엔드 서비스가 차량을 매칭하고 여정에 할당하면 GMTDVehicleReporter 클래스는 GMSNavigator이 탐색 모드일 때, 즉 setDestinations를 통해 목적지가 설정될 때 경로 업데이트를 자동으로 전송합니다.
Driver SDK는 운전자의 현재 탐색 경로와 일치하도록 경로를 설정합니다. 정확한 위치 업데이트를 보장하려면 setDestinations에서 웨이포인트를 Fleet Engine의 목적지와 일치하도록 설정하세요.
다음 예는 위치 업데이트를 사용 설정하는 방법을 보여줍니다.
Swift
importGoogleRidesharingDriverprivateletproviderID="INSERT_YOUR_PROVIDER_ID"classSampleViewController:UIViewController,GMTDVehicleReporterListener{privateletmapView:GMSMapViewoverridefuncviewDidLoad(){// 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>staticNSString*constPROVIDER_ID=@"INSERT_YOUR_PROVIDER_ID";@implementationSampleViewController{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
importGoogleRidesharingDriverprivateletproviderID="INSERT_YOUR_PROVIDER_ID"classSampleViewController:UIViewController,GMTDVehicleReporterListener{privateletmapView:GMSMapViewoverridefuncviewDidLoad(){// 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>staticNSString*constPROVIDER_ID=@"INSERT_YOUR_PROVIDER_ID";@implementationSampleViewController{GMSMapView*_mapView;}-(void)viewDidLoad{// Assumes you have implemented the sample code up to this step.[ridesharingDriverAPI.vehicleReporterupdateVehicleState:GMTDVehicleStateOnline];}@end
[null,null,["최종 업데이트: 2025-08-31(UTC)"],[[["\u003cp\u003eBefore a backend can match a vehicle to a trip, drivers must set up listeners, enable location updates, and set the vehicle state to online using the Driver SDK.\u003c/p\u003e\n"],["\u003cp\u003eEvent listeners monitor vehicle updates sent to Fleet Engine, triggering actions like driver notifications upon communication failures.\u003c/p\u003e\n"],["\u003cp\u003eEnabling location updates requires setting \u003ccode\u003elocationTrackingEnabled\u003c/code\u003e to \u003ccode\u003etrue\u003c/code\u003e, allowing the Driver SDK to send regular location and state updates.\u003c/p\u003e\n"],["\u003cp\u003eDrivers must set the vehicle state to \u003ccode\u003eONLINE\u003c/code\u003e to make the vehicle discoverable for trip assignments in Fleet Engine.\u003c/p\u003e\n"],["\u003cp\u003eThe Driver SDK sets the route dynamically to match the driver's navigation path, requiring waypoints to align with Fleet Engine's destination for accurate location updates.\u003c/p\u003e\n"]]],[],null,["# Get the vehicle ready\n\nThis section shows how to get the vehicle ready for trips. You must complete\neach of the following steps before your backend can match a vehicle to a trip.\n\nSet up listeners\n----------------\n\nAfter initializing the Driver SDK and creating a `GMTDRidesharingDriverAPI`\ninstance, you can set up event listeners to monitor the success or failure of\nvehicle updates sent to Fleet Engine and your backend. These listeners can\ntrigger actions within your driver app, such as notifying the driver if\ncommunication with your backend fails.\n\n### Listen for vehicle update events\n\nWhen the driver enables location updates in the driver app, the Driver SDK\nsends regular vehicle updates to Fleet Engine and the customer\nbackend through the `GMTDVehicleReporter` class. You can have the app respond\nto update events by setting up the `GMTDVehicleReporterListener` protocol.\n\nWith `GMTDVehicleReporterListener`, you can handle the following events:\n\n- [`vehicleReporter:didSucceedVehicleUpdate`](/maps/documentation/mobility/driver-sdk/on-demand/reference/ios/protocol_g_m_t_d_vehicle_reporter_listener-p#a3882e0ff1b3e89d47f501c194818baf5)\n\n Informs the Driver app that the backend services successfully received the\n vehicle location and state update.\n- [`vehicleReporter:didFailVehicleUpdate:withError`](/maps/documentation/mobility/driver-sdk/on-demand/reference/ios/protocol_g_m_t_d_vehicle_reporter_listener-p#a494bc226e6a36c4a4528d35919ce5085)\n\n Informs the listener that a vehicle update failed. As long as the driver has\n location updates enabled, the `GMTDVehicleReporter` class continues to send\n the latest data to Fleet Engine.\n\nThe following examples show how to set up `GMTDVehicleReporterListener` to\nhandle these events: \n\n### Swift\n\n import GoogleRidesharingDriver\n\n private let providerID = \"INSERT_YOUR_PROVIDER_ID\"\n\n class SampleViewController: UIViewController, GMTDVehicleReporterListener {\n private let mapView: GMSMapView\n\n override func viewDidLoad() {\n // Assumes you have implemented the sample code up to this step.\n ridesharingDriverAPI.vehicleReporter.add(self)\n }\n\n func vehicleReporter(_ vehicleReporter: GMTDVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {\n // Handle update succeeded.\n }\n\n func vehicleReporter(_ vehicleReporter: GMTDVehicleReporter, didFail vehicleUpdate: GMTDVehicleUpdate, withError error: Error) {\n // Handle update failed.\n }\n }\n\n### Objective-C\n\n /**\n * SampleViewController.h\n */\n @interface SampleViewController : UIViewController\u003cGMTDVehicleReporterListener\u003e\n @end\n\n /**\n * SampleViewController.m\n */\n #import \"SampleViewController.h\"\n #import \"SampleAccessTokenProvider.h\"\n #import \u003cGoogleRidesharingDriver/GoogleRidesharingDriver.h\u003e\n\n static NSString *const PROVIDER_ID = @\"INSERT_YOUR_PROVIDER_ID\";\n\n @implementation SampleViewController {\n GMSMapView *_mapView;\n }\n\n - (void)viewDidLoad {\n // Assumes you have implemented the sample code up to this step.\n [ridesharingDriverAPI.vehicleReporter addListener:self];\n }\n\n - (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {\n // Handle update succeeded.\n }\n\n - (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {\n // Handle update failed.\n }\n\n @end\n\n### Listen for vehicle location updates\n\nThe Navigation SDK provides location updates to the Driver SDK through the\n`GMSRoadSnappedLocationProvider` class. To receive those updates, you must set\nup the `GMTDVehicleReporter` as a listener.\n**Note:** If the device has not moved since the last location update, the `GMSRoadSnappedLocationProvider` class does not send location updates continuously for better performance. For example, if a driver is waiting idle in the car. If you want to send a new location update, and have set `GMTDVehicleReporter` as a listener after calling `startUpdatingLocation` on `GMSRoadSnappedLocationProvider`, you need to stop and start `GMSRoadSnappedLocationProvider`. \n\n### Swift\n\n import GoogleRidesharingDriver\n\n private let providerID = \"INSERT_YOUR_PROVIDER_ID\"\n\n class SampleViewController: UIViewController, GMTDVehicleReporterListener {\n private let mapView: GMSMapView\n\n override func viewDidLoad() {\n // Assumes you have implemented the sample code up to this step.\n if let roadSnappedLocationProvider = mapView.roadSnappedLocationProvider {\n roadSnappedLocationProvider.add(ridesharingDriverAPI.vehicleReporter)\n roadSnappedLocationProvider.startUpdatingLocation()\n }\n }\n }\n\n### Objective-C\n\n /**\n * SampleViewController.h\n */\n @interface SampleViewController : UIViewController\u003cGMTDVehicleReporterListener\u003e\n @end\n\n /**\n * SampleViewController.m\n */\n #import \"SampleViewController.h\"\n #import \"SampleAccessTokenProvider.h\"\n #import \u003cGoogleRidesharingDriver/GoogleRidesharingDriver.h\u003e\n\n static NSString *const PROVIDER_ID = @\"INSERT_YOUR_PROVIDER_ID\";\n\n @implementation SampleViewController {\n GMSMapView *_mapView;\n }\n\n - (void)viewDidLoad {\n // Assumes you have implemented the sample code up to this step.\n [_mapView.roadSnappedLocationProvider addListener:ridesharingDriverAPI.vehicleReporter];\n [_mapView.roadSnappedLocationProvider startUpdatingLocation];\n }\n\n @end\n\nEnable location updates\n-----------------------\n\nTo enable location updates, set `locationTrackingEnabled` to `true` on\n`GMTDVehicleReporter` in the driver app. Then the `GMTDVehicleReporter` class\nautomatically sends location updates to Fleet Engine. After the Fleet Engine and\ncustomer backend services match and assign the vehicle to a trip, the\n`GMTDVehicleReporter` class sends route updates automatically when the\n`GMSNavigator` is in navigation mode, which is when a destination is set through\n`setDestinations`.\n\nThe Driver SDK sets the route to match the driver's current navigation path. To\nensure accurate location updates, set the waypoint in `setDestinations` to match\nthe destination in Fleet Engine.\n\nThe following example shows how to enable location updates: \n\n### Swift\n\n import GoogleRidesharingDriver\n\n private let providerID = \"INSERT_YOUR_PROVIDER_ID\"\n\n class SampleViewController: UIViewController, GMTDVehicleReporterListener {\n private let mapView: GMSMapView\n\n override func viewDidLoad() {\n // Assumes you have implemented the sample code up to this step.\n ridesharingDriverAPI.vehicleReporter.locationTrackingEnabled = true\n }\n }\n\n### Objective-C\n\n /**\n * SampleViewController.m\n */\n #import \"SampleViewController.h\"\n #import \"SampleAccessTokenProvider.h\"\n #import \u003cGoogleRidesharingDriver/GoogleRidesharingDriver.h\u003e\n\n static NSString *const PROVIDER_ID = @\"INSERT_YOUR_PROVIDER_ID\";\n\n @implementation SampleViewController {\n GMSMapView *_mapView;\n }\n\n - (void)viewDidLoad {\n // Assumes you have implemented the sample code up to this step.\n ridesharingDriverAPI.vehicleReporter.locationTrackingEnabled = YES;\n }\n\n @end\n\n### Set the update interval\n\nBy default, when you set `locationTrackingEnabled` to `true`, the Driver SDK\nsends trip and vehicle updates to Fleet Engine at a 10-second interval. You can\nchange the update interval with `locationUpdateInterval` to a minimum update\ninterval of 5 seconds or a maximum of 60 seconds. More frequent updates may\nresult in slower requests and errors.\n\nSet the vehicle state to online\n-------------------------------\n\nAfter you enable location updates, set the vehicle state to `ONLINE` to make the\nvehicle available for search queries in Fleet Engine.\n\nThe following examples show how to set the vehicle state to `ONLINE`. For\ndetails, see [`updateVehicleState`](/maps/documentation/mobility/driver-sdk/on-demand/reference/ios/interface_g_m_t_d_vehicle_reporter). \n\n### Swift\n\n import GoogleRidesharingDriver\n\n private let providerID = \"INSERT_YOUR_PROVIDER_ID\"\n\n class SampleViewController: UIViewController, GMTDVehicleReporterListener {\n private let mapView: GMSMapView\n\n override func viewDidLoad() {\n // Assumes you have implemented the sample code up to this step.\n ridesharingDriverAPI.vehicleReporter.update(.online)\n }\n }\n\n### Objective-C\n\n #import \"SampleViewController.h\"\n #import \"SampleAccessTokenProvider.h\"\n #import \u003cGoogleRidesharingDriver/GoogleRidesharingDriver.h\u003e\n\n static NSString *const PROVIDER_ID = @\"INSERT_YOUR_PROVIDER_ID\";\n\n @implementation SampleViewController {\n GMSMapView *_mapView;\n }\n\n - (void)viewDidLoad {\n // Assumes you have implemented the sample code up to this step.\n [ridesharingDriverAPI.vehicleReporter\n updateVehicleState:GMTDVehicleStateOnline];\n }\n\n @end\n\nWhat's next\n-----------\n\n[Set the trip details](/maps/documentation/mobility/driver-sdk/on-demand/ios/trip-details)"]]