เตรียมยานพาหนะให้พร้อม

ตั้งค่า 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 วินาที การอัปเดตบ่อยขึ้น คำขอและข้อผิดพลาดที่ช้าลง