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

ส่วนนี้จะแสดงวิธีเตรียมรถให้พร้อมออกเดินทาง คุณต้องทําตามขั้นตอนต่อไปนี้ให้เสร็จสมบูรณ์ก่อนแบ็กเอนด์จะจับคู่ยานพาหนะกับการเดินทางได้

ตั้งค่า 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

ขั้นตอนถัดไป

ตั้งค่ารายละเอียดการเดินทาง