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

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

إعداد المستمعين

بعد إعداد حزمة تطوير البرامج (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

الاستماع إلى إشعارات بشأن الموقع الجغرافي للمركبة

توفّر حزمة تطوير البرامج للتنقّل إشعارات التحديث بشأن الموقع الجغرافي إلى 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 on GMTDVehicleReporter في تطبيق السائق. بعد ذلك، ترسل الفئة GMTDVehicleReporter تلقائيًا تعديلات الموقع الجغرافي إلى Fleet Engine. بعد أن تتطابق خدمات Fleet Engine وخلفية العميل وتُعيّن المركبة إلى رحلة، يرسل الصف GMTDVehicleReporter تعديلات على المسار تلقائيًا عندما يكون GMSNavigator في وضع التنقّل، أي عندما يتم ضبط وجهة من خلال setDestinations.

تضبط حزمة تطوير البرامج (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، ترسل حزمة تطوير البرامج (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

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

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