このセクションでは、車両を運転に備える方法について説明します。完了する必要があります バックエンドで車両をルートに一致させる前に、以下の各ステップを実施する必要があります。
リスナーを設定する
Driver SDK を初期化し、GMTDRidesharingDriverAPI
を作成した後
たとえば、イベント リスナーをセットアップして、
車両の最新情報が
Fleet Engine とバックエンドに送信されますこれらのリスナーは
ドライバー アプリ内のアクションをトリガーできます。たとえば、
通信に失敗します。
車両の更新イベントをリッスンする
ドライバーがドライバーアプリで位置情報の更新を有効にすると、Driver SDK は GMTDVehicleReporter
クラスを介して、Fleet Engine とお客様のバックエンドに定期的な車両の更新を送信します。GMTDVehicleReporterListener
プロトコルを設定すると、アプリが更新イベントに応答するようにできます。
GMTDVehicleReporterListener
では、次のイベントを処理できます。
vehicleReporter:didSucceedVehicleUpdate
バックエンド サービスが受信メッセージを正常に受信したことをドライバー アプリに通知します。 車両の位置情報と状態を更新します。
vehicleReporter:didFailVehicleUpdate:withError
車両の更新に失敗したことをリスナーに通知します。運転手が 位置情報の更新を有効にしても、
GMTDVehicleReporter
クラスは引き続き 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.
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
車両の位置情報の更新をリッスンする
Navigation SDK は、SDK を使用して Driver SDK に位置情報の更新を提供します。
GMSRoadSnappedLocationProvider
クラス。これらのアップデートを受け取るには、
GMTDVehicleReporter
をリスナーとして起動します。
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
位置情報の更新を有効にする
位置情報の更新を有効にするには、locationTrackingEnabled
を true
に設定
ドライバアプリの GMTDVehicleReporter
。次に、GMTDVehicleReporter
クラスです。
Fleet Engine に位置情報の更新を自動的に送信します。Fleet Engine とお客様のバックエンド サービスが一致し、車両がルートに割り当てられると、GMSNavigator
がナビゲーション モード(setDestinations
で目的地が設定されている場合)になると、GMTDVehicleReporter
クラスがルート更新を自動的に送信します。
Driver SDK は、ドライバーの現在のナビゲーション パスと一致するようにルートを設定します。正確な位置情報の更新を確実に行うには、Fleet Engine のリンク先と一致するように setDestinations
のウェイポイントを設定します。
次の例は、位置情報の更新を有効にする方法を示しています。
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
更新間隔を設定する
デフォルトでは、locationTrackingEnabled
を true
に設定すると、Driver SDK が
は、ルートと車両の最新情報を 10 秒間隔で Fleet Engine に送信します。Google Chat では
locationUpdateInterval
の更新間隔を最小の更新に変更する
5 秒から 60 秒まで設定できます。より頻繁なアップデートにより、
リクエストとエラーが遅くなります
車両の状態をオンラインに設定する
位置情報の更新を有効にしたら、車両の状態を ONLINE
に設定して、
Fleet Engine での検索クエリに使用できるようになりました。
次の例は、車両の状態を ONLINE
に設定する方法を示しています。対象
詳しくは、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