Cette section explique comment préparer le véhicule pour les trajets. Vous devez effectuer chacune des étapes suivantes pour que votre backend puisse associer un véhicule à un trajet.
Configurer des écouteurs
Après avoir initialisé le Driver SDK et créé une instance GMTDRidesharingDriverAPI
, vous pouvez configurer des écouteurs d'événements pour surveiller la réussite ou l'échec des mises à jour de véhicules envoyées à Fleet Engine et à votre backend. Ces écouteurs peuvent déclencher des actions dans votre application de chauffeur, par exemple en informant le chauffeur si la communication avec votre backend échoue.
Écouter les événements de mise à jour du véhicule
Lorsque le chauffeur active les mises à jour de position dans l'application chauffeur, le Driver SDK envoie régulièrement des informations sur le véhicule à Fleet Engine et au backend client via la classe GMTDVehicleReporter
. Vous pouvez faire en sorte que l'application réponde aux événements de mise à jour en configurant le protocole GMTDVehicleReporterListener
.
Avec GMTDVehicleReporterListener
, vous pouvez gérer les événements suivants :
vehicleReporter:didSucceedVehicleUpdate
Indique à l'application Driver que les services de backend ont bien reçu la mise à jour de l'état et de la position du véhicule.
vehicleReporter:didFailVehicleUpdate:withError
Informe l'utilisateur qu'une mise à jour du véhicule a échoué. Tant que les mises à jour de la position sont activées pour le chauffeur, 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 mises à jour de la position du véhicule
Le SDK Navigation fournit des mises à jour 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
dans GMTDVehicleReporter
de l'application du conducteur. La classe GMTDVehicleReporter
envoie ensuite automatiquement les mises à jour de la position à Fleet Engine. Une fois que les services Fleet Engine et de backend client correspondent et que le véhicule est attribué à un trajet, la classe GMTDVehicleReporter
envoie automatiquement des mises à jour de l'itinéraire lorsque GMSNavigator
est en mode navigation, c'est-à-dire lorsqu'une destination est définie via setDestinations
.
Le Driver SDK définit l'itinéraire pour qu'il corresponde au trajet de navigation actuel du conducteur. Pour vous assurer que les informations de localisation sont précises, définissez le point de cheminement dans setDestinations
de sorte 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 Driver SDK envoie des informations sur les trajets et les véhicules à 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 entraîner des requêtes plus lentes et des erreurs.
Définir l'état du véhicule sur "En ligne"
Une fois que vous avez activé les mises à jour de la position, définissez l'état du véhicule sur ONLINE
pour le rendre disponible pour les requêtes de recherche dans Fleet Engine.
Les exemples suivants montrent comment définir l'état du véhicule sur ONLINE
. Pour en savoir plus, 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