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

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

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

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

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

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