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

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

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

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

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

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

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

  • vehicleReporter:didSucceedVehicleUpdate

    إبلاغ تطبيق "سائق Uber" بأنّ خدمات الخلفية تلقّت بنجاح تعديل الموقع الجغرافي للمركبة وحالتها

  • 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 في تطبيق "سائق Fleet". بعد ذلك، تُرسِل فئة 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

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

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