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

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

إعداد أدوات معالجة الحدث

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

رصد أحداث تحديث المركبات

عندما يفعّل برنامج التشغيل تحديثات الموقع الجغرافي في تطبيق برنامج التشغيل، تُفعِّل حزمة تطوير البرامج (SDK) لبرنامج التشغيل. ترسل تحديثات منتظمة للمركبة إلى Fleet Engine والعميل الخلفية من خلال فئة GMTDVehicleReporter. يمكنك جعل التطبيق يستجيب لتعديل الأحداث من خلال إعداد بروتوكول GMTDVehicleReporterListener.

من خلال GMTDVehicleReporterListener، يمكنك التعامل مع الأحداث التالية:

  • vehicleReporter:didSucceedVehicleUpdate

    تُبلغ تطبيق Driver بأنّ خدمات الخلفية قد تلقّت بنجاح وتحديث موقع المركبة والحالة.

  • 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

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

توفِّر حزمة تطوير البرامج (SDK) للتنقّل تحديثات الموقع الجغرافي لحزمة تطوير البرامج (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

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

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

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