تجهيز المركبة

يوضّح هذا القسم كيفية تجهيز المركبة للرحلات. يجب إكمال كل خطوة من الخطوات التالية قبل أن تتمكّن الأنظمة الخلفية من مطابقة مركبة مع رحلة.

إعداد أدوات الاستماع

بعد تهيئة Driver SDK وإنشاء مثيل GMTDRidesharingDriverAPI، يمكنك إعداد متتبِّعات الأحداث لمراقبة نجاح أو فشل تعديلات المركبة التي يتم إرسالها إلى 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

الخطوات التالية

ضبط تفاصيل الرحلة