הגדרת מאזינים
אחרי אתחול ה-SDK של מנהל ההתקן ויצירת GMTDDeliveryDriverAPI
תוכלו להגדיר פונקציות event listener למעקב אחרי ההצלחה או הכישלון של
עדכוני רכב נשלחו ל-Fleet Engine ולקצה העורפי שלך. המאזינים האלה יכולים להפעיל פעולות באפליקציה של הנהג, למשל לשלוח התראה לנהג אם התקשורת עם הקצה העורפי נכשלת.
האזנה לאירועים של עדכון הרכב
כשהנהג מפעיל עדכוני מיקום באפליקציית הנהג, ה-Driver SDK שולח
עדכונים שוטפים של הרכב ב-Fleet Engine ובקצה העורפי של הלקוח באמצעות
כיתה אחת (GMTDDeliveryVehicleReporter
). כדי שהאפליקציה תגיב לאירועי עדכון, צריך להגדיר את פרוטוקול GMTDVehicleReporterListener
.
עם GMTDVehicleReporterListener
, תוכלו לטפל באירועים הבאים:
vehicleReporter:didSucceedVehicleUpdate
מיידעת את אפליקציית הנהג על כך שהשירותים לקצה העורפי קיבלו בהצלחה עדכון המצב והמיקום של הרכבים.
vehicleReporter:didFailVehicleUpdate:withError
המערכת מעדכנת את המאזין שעדכון הרכב נכשל. כל עוד העדכונים של המיקום מופעלים אצל הנהג, הכיתה
GMTDDeliveryVehicleReporter
תמשיך לשלוח את הנתונים העדכניים ביותר ל-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.
deliveryDriverAPI.vehicleReporter.add(self)
}
func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, didSucceed vehicleUpdate: GMTDVehicleUpdate) {
// Handle update succeeded.
}
func vehicleReporter(_ vehicleReporter: GMTDDeliveryVehicleReporter, 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 IMPLEMENTED HAVE THE SAMPLE CODE UP TO THIS STEP.
[delivervehicleReporter addListener:self];
}
- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didSucceedVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate {
// Handle update succeeded.
}
- (void)vehicleReporter:(GMTDDeliveryVehicleReporter *)vehicleReporter didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate withError:(NSError *)error {
// Handle update failed.
}
@end
הפעלת עדכוני המיקום
כדי להפעיל את עדכוני המיקום, צריך להפעיל את אפליקציית הנהג באפליקציית הנהג או הפעלה.
GMTDDeliveryVehicleReporter
, צריך להגדיר את locationTrackingEnabled
לערך
YES
. לאחר מכן, העדכונים של המיקום יישלחו באופן אוטומטי ל-Fleet Engine על ידי הכיתה GMTDDeliveryVehicleReporter
. בנוסף, כשה-GMSNavigator
נמצא במצב ניווט, כלומר כשמגדירים יעד דרך setDestinations
, הכיתה GMTDDeliveryVehicleReporter
שולחת באופן אוטומטי עדכונים לגבי המסלול וזמני ההגעה המשוערים.
ה-SDK לנהגים מגדיר את המסלול כך שיתאים לנתיב הניווט הנוכחי של הנהג. שפת תרגום
להבטיח עדכוני מיקום מדויקים, להגדיר את ציון הדרך
-setDestinations:callback:
כדי להתאים ליעד ב-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.
deliveryDriverAPI.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.
deliveryDriverAPI.vehicleReporter.locationTrackingEnabled = YES;
}
@end
(אופציונלי) מגדירים את מרווח הזמן לעדכון
כברירת מחדל, כשמגדירים את locationTrackingEnabled
לערך YES
, ה-SDK של מנהל ההתקן
שולחת עדכוני מיקום ל-Fleet Engine במרווחים של 10 שניות. אפשר לשנות את מרווח הזמן לעדכון באמצעות locationUpdateInterval
למרווח זמן מינימלי של 5 שניות או למרווח זמן מקסימלי של 60 שניות. עדכונים תכופים יותר עשויים לגרום
בקשות ושגיאות איטיות יותר.