Bu bölümde, aracı yolculuklara nasıl hazırlayacağınız gösterilmektedir. Arka uçunuzun bir aracı bir yolculukla eşleştirebilmesi için aşağıdaki adımların her birini tamamlamanız gerekir.
İşleyicileri ayarlama
Driver SDK'sını ilk kullanıma hazırlayıp GMTDRidesharingDriverAPI
örneğini oluşturduktan sonra, Fleet Engine'e ve arka uçunuza gönderilen araç güncellemelerinin
başarılı veya başarısız olmasını izlemek için etkinlik işleyicileri ayarlayabilirsiniz. Bu dinleyiciler, sürücü uygulamanızda işlemleri tetikleyebilir. Örneğin, arka ucunuzla iletişim başarısız olursa sürücüye bildirim gönderebilir.
Araç güncelleme etkinliklerini dinleme
Sürücü, sürücü uygulamasında konum güncellemelerini etkinleştirdiğinde Driver SDK, GMTDVehicleReporter sınıfı aracılığıyla Fleet Engine'e ve müşteri arka ucuna düzenli araç güncellemeleri gönderir. GMTDVehicleReporterListener protokolünü ayarlayarak uygulamanın güncelleme etkinliklerine yanıt vermesini sağlayabilirsiniz.
GMTDVehicleReporterListener ile aşağıdaki etkinlikleri yönetebilirsiniz:
vehicleReporter:didSucceedVehicleUpdateArka uç hizmetlerinin, araç konumu ve durum güncellemesini başarıyla aldığını sürücü uygulamasına bildirir.
vehicleReporter:didFailVehicleUpdate:withErrorDinleyiciyi araç güncellemesinin başarısız olduğu konusunda bilgilendirir. Sürücü konum güncellemelerini etkinleştirdiği sürece
GMTDVehicleReportersınıfı, en son verileri Fleet Engine'e göndermeye devam eder.
Aşağıdaki örneklerde, bu etkinlikleri işlemek için GMTDVehicleReporterListener 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
Navigation SDK, GMSRoadSnappedLocationProvider sınıfı aracılığıyla Driver SDK'ya konum güncellemeleri sağlar. Bu güncellemeleri almak için GMTDVehicleReporter cihazını 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 locationTrackingEnabled seçeneğini true olarak ayarlayın. Ardından GMTDVehicleReporter sınıfı, Fleet Engine'e otomatik olarak konum güncellemeleri gönderir.GMTDVehicleReporter Filo Motoru ve müşteri arka uç hizmetleri eşleştikten ve aracı bir geziye atadıktan sonra, GMTDVehicleReporter sınıfı, GMSNavigator navigasyon modundayken rota güncellemelerini otomatik olarak gönderir. Bu modda, setDestinations üzerinden bir hedef belirlenir.
Sürücü SDK'sı, rotayı sürücünün mevcut gezinme yoluyla eşleşecek şekilde ayarlar. Doğru konum güncellemeleri sağlamak için setDestinations içindeki ara noktayı Fleet Engine'deki 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'e yolculuk ve araç güncellemeleri gönderir. Güncelleme aralığını locationUpdateInterval ile en az 5 saniye veya en fazla 60 saniye olacak şekilde değiştirebilirsiniz. Daha sık güncelleme, isteklerin yavaşlamasına ve hatalara neden olabilir.
Araç durumunu "online" olarak ayarlayın.
Konum güncellemelerini etkinleştirdikten sonra, aracı Fleet Engine'deki arama sorgularında kullanılabilir hale getirmek için 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
Sırada ne var?
Seyahat ayrıntılarını ayarlama