Khắc phục lỗi

Phần này mô tả cách xử lý lỗi.

Xử lý lỗi update_mask

Khi GMTDDeliveryVehicleReporter gửi thông tin cập nhật về xe, có thể xảy ra lỗi update_mask khi tham số truy vấn updateMask bị bỏ trống. Để ngăn chặn lỗi này, hãy luôn cung cấp ít nhất một tên trường. Điều này thường xảy ra đối với lần cập nhật đầu tiên sau khi khởi động. Để biết thêm thông tin về cách cập nhật các trường của xe trong Fleet Engine, hãy xem bài viết Cập nhật các trường của xe.

Ví dụ sau đây cho thấy cách xử lý lỗi này:

Swift

import GoogleRidesharingDriver

class VehicleReporterListener: NSObject, GMTDVehicleReporterListener {
  func vehicleReporter(
    _ vehicleReporter: GMTDVehicleReporter,
    didFail vehicleUpdate: GMTDVehicleUpdate,
    withError error: Error
  ) {
    let fullError = error as NSError
    if let innerError = fullError.userInfo[NSUnderlyingErrorKey] as? NSError {
      let innerFullError = innerError as NSError
      if innerFullError.localizedDescription.contains("update_mask cannot be empty") {
        emptyMaskUpdates += 1
        return
      }
    }
    failedUpdates += 1
  }

  override init() {
    emptyMaskUpdates = 0
    failedUpdates = 0
  }
}

Objective-C

#import "VehicleReporterListener.h"
#import <GoogleRidesharingDriver/GoogleRidesharingDriver.h>

@implementation VehicleReporterListener {
  NSInteger emptyMaskUpdates = 0;
  NSInteger failedUpdates = 0;
}

- (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter
  didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate
             withError:(NSError *)error {
  for (NSError *underlyingError in error.underlyingErrors) {
    if ([underlyingError.localizedDescription containsString:@"update_mask cannot be empty"]) {
      emptyMaskUpdates += 1;
      return;
    }
  }
  failedUpdates += 1
}

@end