Обработка ошибок потребительского SDK

Consumer SDK отправляет ошибки обновления поездки потребительскому приложению с помощью механизма обратного вызова. Параметр обратного вызова — это возвращаемый тип, зависящий от платформы ( TripUpdateError в Android и NSError в iOS).

Извлечение кодов состояния

Ошибки, передаваемые обратному вызову, обычно являются ошибками gRPC, и вы также можете извлечь из них дополнительную информацию в виде кода состояния. Полный список кодов состояния см. в разделе Коды состояния и их использование в gRPC .

Джава

Вы можете извлечь код состояния gRPC, предоставляющий подробную информацию об ошибке, из TripUpdateError возвращенного из onTripUpdateError() .

// Called when there is a trip update error.
@Override
public void onTripUpdateError(TripInfo tripInfo, TripUpdateError error) {
  Status.Code code = error.getStatusCode();
}

Котлин

Вы можете извлечь код состояния gRPC, предоставляющий подробную информацию об ошибке, из TripUpdateError возвращенного из onTripUpdateError() .

// Called when there is a trip update error.
override fun onTripUpdateError(tripInfo: TripInfo, error: TripUpdateError) {
  val code = error.getStatusCode()
}

Быстрый

NSError вызывается обратно в tripModel(_:didFailUpdateTripWithError:) .

// Called when there is a trip update error.
func tripModel(_ tripModel: GMTCTripModel, didFailUpdateTripWithError error: Error?) {
  // Check to see if the error comes from gRPC.
  if let error = error as NSError?, error.domain == "io.grpc" {
    let gRPCErrorCode = error.code
    ...
  }
}

Цель-C

NSError вызывается обратно в tripModel:didFailUpdateTripWithError: .

// Called when there is a trip update error.
- (void)tripModel:(GMTCTripModel *)tripModel didFailUpdateTripWithError:(NSError *)error {
  // Check to see if the error comes from gRPC.
  if ([error.domain isEqualToString:@"io.grpc"]) {
    NSInteger gRPCErrorCode = error.code;
    ...
  }
}

Интерпретация кодов состояния

Коды состояния охватывают два типа ошибок: ошибки сервера и сети, а также ошибки на стороне клиента.

Ошибки сервера и сети

Следующие коды состояния относятся к ошибкам сети или сервера, и вам не нужно предпринимать никаких действий для их устранения. Consumer SDK автоматически восстанавливается после них.

Код состояния Описание
ПРЕРВИРОВАНО Сервер перестал отправлять ответ. Обычно это вызвано проблемой сервера.
ОТМЕНЕНО Сервер прервал исходящий ответ. Обычно это происходит, когда
приложение отправляется в фоновый режим или когда происходит изменение состояния
Потребительское приложение.
ПРЕРЫВАНИЕ
DEADLINE_EXCEEDED Сервер отвечал слишком долго.
НЕДОСТУПЕН Сервер был недоступен. Обычно это вызвано проблемой сети.

Ошибки клиента

Следующие коды состояния относятся к ошибкам клиента, и вам необходимо принять меры для их устранения. Consumer SDK продолжает повторять попытки обновить поездку, пока вы не прекратите совместное использование поездки, но не сможет восстановиться, пока вы не предпримете соответствующие действия.

Код состояния Описание
НЕДЕЙСТВИТЕЛЬНЫМ АРГУМЕНТ В потребительском приложении указано неверное название поездки; Название поездки должно иметь формат providers/{provider_id}/trips/{trip_id} .
НЕ НАЙДЕНО Поездка так и не была создана.
ДОСТУП ЗАПРЕЩЕН У потребительского приложения недостаточно разрешений. Эта ошибка возникает, когда:
  • У потребительского приложения нет разрешений
  • Consumer SDK не включен для проекта в Google Cloud Console.
  • Токен JWT либо отсутствует, либо недействителен.
  • Токен JWT подписан идентификатором поездки, который не соответствует запрошенной поездке.
RESOURCE_EXHAUSTED Квота ресурса равна нулю, или скорость трафика превышает ограничение скорости.
НЕ АУТЕНТИФИЦИРОВАННЫЙ Запрос не прошел аутентификацию из-за недопустимого токена JWT. Эта ошибка возникает либо в том случае, если токен JWT подписан без идентификатора поездки, либо когда срок действия токена JWT истек.