Bu bölümde, aracın gezilere nasıl hazırlanacağı gösterilmektedir. Arka uç sunucunuz bir aracı bir seyahatle eşleştirebilmesi için aşağıdaki adımların her birini tamamlamanız gerekir.
Dinleyicileri ayarlama
Driver SDK'sını ilk kullanıma hazırlayın ve bir GMTDRidesharingDriverAPI
örneği oluşturduktan sonra, Fleet Engine'a ve arka uç sunucunuza gönderilen araç güncellemelerinin başarısını veya başarısızlığını izlemek için etkinlik dinleyicileri ayarlayabilirsiniz. Bu dinleyiciler, sürücü uygulamanızda arka uçla iletişim başarısız olursa sürücüyü bilgilendirme gibi işlemleri tetikleyebilir.
Araç güncelleme etkinliklerini dinleme
Sürücü, sürücü uygulamasında konum güncellemelerini etkinleştirdiğinde Sürücü SDK'sı, GMTDVehicleReporter
sınıfı aracılığıyla Fleet Engine'a ve müşteri arka ucuna düzenli araç güncellemeleri gönderir. GMTDVehicleReporterListener
protokolünü ayarlayarak uygulamanın etkinlikleri güncellemeye yanıt vermesini sağlayabilirsiniz.
GMTDVehicleReporterListener
ile aşağıdaki etkinlikleri yönetebilirsiniz:
vehicleReporter:didSucceedVehicleUpdate
Sürücü uygulamasına, arka uç hizmetlerinin araç konumu ve durum güncellemesini başarıyla aldığını bildirir.
vehicleReporter:didFailVehicleUpdate:withError
Dinleyiciye bir araç güncellemesinin başarısız olduğunu bildirir. Sürücü konum güncellemelerini etkinleştirdiği sürece
GMTDVehicleReporter
sınıfı, en son verileri Fleet Engine'a göndermeye devam eder.
Aşağıdaki örneklerde, bu etkinlikleri işlemek için GMTDVehicleReporterListener
'ün nasıl ayarlanacağı gösterilmektedir:
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
Araç konum güncellemelerini dinleme
Navigasyon SDK'sı, GMSRoadSnappedLocationProvider
sınıfı aracılığıyla Sürücü SDK'sına konum güncellemeleri sağlar. Bu güncellemeleri almak için GMTDVehicleReporter
'ü dinleyici olarak ayarlamanız gerekir.
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
Konum güncellemelerini etkinleştirme
Konum güncellemelerini etkinleştirmek için sürücü uygulamasında GMTDVehicleReporter
üzerinde locationTrackingEnabled
'ü true
olarak ayarlayın. Ardından GMTDVehicleReporter
sınıfı, konum güncellemelerini Fleet Engine'e otomatik olarak gönderir. Fleet Engine ve müşteri arka uç hizmetleri eşleşip aracı bir seyahate atadıktan sonra GMTDVehicleReporter
sınıfı, GMSNavigator
navigasyon modundayken (setDestinations
üzerinden bir hedef belirlendiğinde) rota güncellemelerini otomatik olarak gönderir.
Sürücü SDK'sı, rotayı sürücünün mevcut navigasyon yoluyla eşleşecek şekilde ayarlar. Doğru konum güncellemeleri sağlamak için setDestinations
'teki yol noktasını Fleet Engine'daki hedefle eşleşecek şekilde ayarlayın.
Aşağıdaki örnekte, konum güncellemelerinin nasıl etkinleştirileceği gösterilmektedir:
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
Güncelleme aralığını ayarlama
Varsayılan olarak, locationTrackingEnabled
değerini true
olarak ayarladığınızda Sürücü SDK'sı, 10 saniyelik aralıklarla Fleet Engine'a gezi ve araç güncellemeleri gönderir. locationUpdateInterval
ile güncelleme aralığını en az 5 saniye veya en fazla 60 saniye olacak şekilde değiştirebilirsiniz. Daha sık güncellemeler, isteklerin yavaşlamasına ve hatalara neden olabilir.
Araç durumunu "online" olarak ayarlama
Konum güncellemelerini etkinleştirdikten sonra, aracı Fleet Engine'da arama sorguları için kullanılabilir hale getirmek üzere araç durumunu ONLINE
olarak ayarlayın.
Aşağıdaki örneklerde, araç durumunun nasıl ONLINE
olarak ayarlanacağı gösterilmektedir. Ayrıntılı bilgi için updateVehicleState
başlıklı makaleyi inceleyin.
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