ส่วนนี้จะแสดงวิธีเตรียมรถให้พร้อมออกเดินทาง คุณต้องทําตามขั้นตอนต่อไปนี้ให้เสร็จสมบูรณ์ก่อนแบ็กเอนด์จะจับคู่ยานพาหนะกับการเดินทางได้
ตั้งค่า Listener
หลังจากเริ่มต้น Driver SDK และสร้าง GMTDRidesharingDriverAPI
คุณสามารถตั้งค่า Listener เหตุการณ์เพื่อตรวจสอบความสำเร็จหรือความล้มเหลวของ
การอัปเดตยานพาหนะที่ส่งไปยัง Fleet Engine และแบ็กเอนด์ของคุณ ผู้ฟังเหล่านี้สามารถ
ทำให้เกิดการดำเนินการภายในแอปไดรเวอร์ เช่น แจ้งเตือนคนขับหาก
สื่อสารกับแบ็กเอนด์ไม่สำเร็จ
รอรับเหตุการณ์การอัปเดตยานพาหนะ
เมื่อคนขับเปิดใช้การอัปเดตตำแหน่งในแอปไดรเวอร์ SDK ไดรเวอร์
ส่งการอัปเดตยานพาหนะไปยัง Fleet Engine และลูกค้าเป็นประจำ
ผ่านคลาส GMTDVehicleReporter
คุณสามารถตั้งค่าให้แอปตอบสนองต่อการอัปเดตเหตุการณ์ได้โดยการตั้งค่าโปรโตคอล 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 จะอัปเดตตำแหน่งให้กับ 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 และ
บริการแบ็กเอนด์ของลูกค้าจะจับคู่และกำหนดพาหนะให้กับการเดินทาง
GMTDVehicleReporter
คลาสจะส่งการอัปเดตเส้นทางโดยอัตโนมัติเมื่อ
GMSNavigator
อยู่ในโหมดการนำทาง ซึ่งเป็นเวลากำหนดจุดหมาย
setDestinations
Driver SDK กำหนดเส้นทางให้ตรงกับเส้นทางการนำทางปัจจุบันของผู้ขับ ถึง
เพื่อให้มีการอัปเดตตำแหน่งที่ถูกต้อง ตั้งค่าจุดอ้างอิงใน setDestinations
ให้เหมือนกับส่วนที่เลือก
ปลายทางใน Fleet Engine
ตัวอย่างต่อไปนี้แสดงวิธีเปิดใช้การอัปเดตตำแหน่ง
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
ส่งการอัปเดตการเดินทางและยานพาหนะไปยัง Fleet Engine ทุกๆ 10 วินาที คุณสามารถเปลี่ยนช่วงเวลาการอัปเดตด้วย 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