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

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

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

بعد تهيئة Driver SDK وإنشاء مثيل GMTDRidesharingDriverAPI، يمكنك إعداد أدوات استماع للأحداث لمراقبة نجاح أو فشل تحديثات المركبة التي يتم إرسالها إلى Fleet Engine والأنظمة الخلفية. يمكن أن تؤدي أدوات الاستماع هذه إلى تنفيذ إجراءات داخل تطبيق السائق، مثل إشعار السائق في حال تعذّر التواصل مع الأنظمة الخلفية.

الاستماع إلى أحداث تحديث المركبة

عندما يفعِّل السائق ميزة "تحديثات الموقع الجغرافي" في تطبيق السائق، ترسل حزمة Driver 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

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

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