Cette section explique comment préparer le véhicule pour les trajets. Vous devez effectuer chacune des étapes suivantes avant que votre backend puisse faire correspondre un véhicule à un trajet.
Configurer des écouteurs
Après avoir initialisé le SDK Driver et créé une instance GMTDRidesharingDriverAPI
, vous pouvez configurer des écouteurs d'événements pour surveiller le succès ou l'échec des mises à jour de véhicule envoyées à Fleet Engine et à votre backend. Ces écouteurs peuvent
déclencher des actions dans votre application de conduite, par exemple avertir le conducteur si
la communication avec votre backend échoue.
Écouter les événements de mise à jour du véhicule
Lorsque le conducteur active les mises à jour de position dans l'application conducteur, le SDK Driver envoie des mises à jour régulières du véhicule à Fleet Engine et au backend du client via la classe GMTDVehicleReporter
. Vous pouvez demander à l'application de répondre aux événements de mise à jour en configurant le protocole GMTDVehicleReporterListener
.
GMTDVehicleReporterListener
vous permet de gérer les événements suivants:
vehicleReporter:didSucceedVehicleUpdate
Informe l'application pilote que les services de backend ont bien reçu le mise à jour de la position et de l'état du véhicule
vehicleReporter:didFailVehicleUpdate:withError
Informe l'écouteur qu'une mise à jour de véhicule a échoué. Tant que le pilote a activé les mises à jour de position, la classe
GMTDVehicleReporter
continue d'envoyer les dernières données à Fleet Engine.
Les exemples suivants montrent comment configurer GMTDVehicleReporterListener
pour
gérer ces événements:
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
Écouter les notifications de position du véhicule
Le SDK Navigation fournit des informations de localisation au SDK Driver via la classe GMSRoadSnappedLocationProvider
. Pour recevoir ces mises à jour, vous devez configurer GMTDVehicleReporter
en tant qu'écouteur.
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
Activer les mises à jour de la position
Pour activer les mises à jour de la position, définissez locationTrackingEnabled
sur true
sur
GMTDVehicleReporter
dans l'application de pilote. Ensuite, la classe GMTDVehicleReporter
envoie automatiquement des mises à jour
de la position à Fleet Engine. Une fois que le moteur de parc et les services backend client ont mis en correspondance et attribué le véhicule à un trajet, la classe GMTDVehicleReporter
envoie automatiquement des mises à jour d'itinéraire lorsque le GMSNavigator
est en mode navigation, c'est-à-dire lorsqu'une destination est définie via setDestinations
.
Le SDK Driver définit l'itinéraire de sorte qu'il corresponde au chemin de navigation actuel du conducteur. Pour garantir des mises à jour de position précises, définissez le point de cheminement dans setDestinations
pour qu'il corresponde à la destination dans Fleet Engine.
L'exemple suivant montre comment activer les mises à jour de la position:
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
Définir l'intervalle de mise à jour
Par défaut, lorsque vous définissez locationTrackingEnabled
sur true
, le SDK Driver
envoie des mises à jour du trajet et du véhicule à Fleet Engine toutes les 10 secondes. Vous pouvez modifier l'intervalle de mise à jour avec locationUpdateInterval
pour définir un intervalle de mise à jour minimal de 5 secondes ou maximal de 60 secondes. Des mises à jour plus fréquentes peuvent
ce qui ralentit les requêtes et entraîne des erreurs.
Définir l'état du véhicule sur "En ligne"
Après avoir activé les mises à jour de la position, définissez l'état du véhicule sur ONLINE
pour que
disponible pour des requêtes de recherche dans Fleet Engine.
Les exemples suivants montrent comment définir l'état du véhicule sur ONLINE
. Pour
détails, consultez 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