ตั้งค่า Listener
หลังจากเริ่มต้น Driver SDK และสร้าง GMTDDeliveryDriverAPI
คุณสามารถตั้งค่า Listener เหตุการณ์เพื่อตรวจสอบความสำเร็จหรือความล้มเหลวของ
การอัปเดตยานพาหนะที่ส่งไปยัง Fleet Engine และแบ็กเอนด์ของคุณ ผู้ฟังเหล่านี้สามารถ
ทำให้เกิดการดำเนินการภายในแอปไดรเวอร์ เช่น แจ้งเตือนคนขับหาก
สื่อสารกับแบ็กเอนด์ไม่สำเร็จ
ฟังเหตุการณ์การอัปเดตยานพาหนะ
เมื่อคนขับเปิดใช้การอัปเดตตำแหน่งในแอปไดรเวอร์ ระบบจะส่ง Driver SDK
การอัปเดตยานพาหนะเป็นประจำไปยัง Fleet Engine และแบ็กเอนด์ของลูกค้าผ่าน
GMTDDeliveryVehicleReporter
ชั้นเรียน คุณสามารถให้แอปตอบสนองต่อการอัปเดตได้
กิจกรรมโดยการตั้งค่าโปรโตคอล GMTDVehicleReporterListener
เมื่อใช้ GMTDVehicleReporterListener
คุณจะจัดการเหตุการณ์ต่อไปนี้ได้
vehicleReporter:didSucceedVehicleUpdate
แจ้งแอปไดรเวอร์ว่าบริการแบ็กเอนด์ได้รับ ตำแหน่งรถและการอัปเดตสถานะ
vehicleReporter:didFailVehicleUpdate:withError
แจ้งผู้ฟังว่าการอัปเดตยานพาหนะล้มเหลว ตราบใดที่คนขับ เปิดใช้การอัปเดตตำแหน่งแล้ว ชั้นเรียน
GMTDDeliveryVehicleReporter
จะดำเนินต่อไป เพื่อส่งข้อมูลล่าสุดไปยัง 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.
deliveryDriverAPI.vehicleReporter.add(self)
}
func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {
// Handle update succeeded.
}
func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, 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 IMPLEMENTED HAVE THE SAMPLE CODE UP TO THIS STEP.
[delivervehicleReporter addListener:self];
}
- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {
// Handle update succeeded.
}
- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {
// Handle update failed.
}
@end
เปิดใช้การอัปเดตตำแหน่ง
หากต้องการเปิดใช้การอัปเดตตำแหน่ง ในแอปไดรเวอร์
GMTDDeliveryVehicleReporter
ตั้งค่า locationTrackingEnabled
เป็น
YES
จากนั้น
GMTDDeliveryVehicleReporter
ชั้นเรียนจะส่งการอัปเดตตำแหน่งให้โดยอัตโนมัติ
Fleet Engine นอกจากนี้ เมื่อ GMSNavigator
อยู่ในโหมดการนําทาง
คือเมื่อมีการตั้งค่าปลายทางผ่าน setDestinations
คลาส GMTDDeliveryVehicleReporter
จะส่งอัปเดตเส้นทางและเวลาถึงโดยประมาณโดยอัตโนมัติ
Driver SDK กำหนดเส้นทางให้ตรงกับเส้นทางการนำทางปัจจุบันของผู้ขับ ถึง
เพื่อให้มีการอัปเดตตำแหน่งที่ถูกต้อง กำหนดจุดอ้างอิง
-setDestinations:callback:
เพื่อจับคู่ปลายทางใน 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.
deliveryDriverAPI.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.
deliveryDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}
@end
(ไม่บังคับ) กำหนดช่วงเวลาการอัปเดต
โดยค่าเริ่มต้น เมื่อคุณตั้งค่า locationTrackingEnabled
เป็น YES
จะทำให้ Driver SDK
ส่งการอัปเดตตำแหน่งไปยัง Fleet Engine ทุกๆ 10 วินาที คุณสามารถเปลี่ยน
ช่วงเวลาการอัปเดตด้วย locationUpdateInterval
ถึงช่วงเวลาการอัปเดตต่ำสุด
5 วินาที หรือไม่เกิน 60 วินาที การอัปเดตบ่อยขึ้น
คำขอและข้อผิดพลาดที่ช้าลง