Obsługa błędów pakietów SDK dla konsumentów

Pakiet SDK Consumer SDK wysyła do aplikacji konsumenta błędy aktualizacji podróży za pomocą mechanizmu wywołania zwrotnego. Parametr wywołania zwrotnego jest typem zwrotu specyficznym dla platformy (TripUpdateError w Androidzie i NSError na iOS).

Wyodrębnianie kodów stanu

Błędy przekazywane do wywołania zwrotnego są zwykle błędami gRPC, ale możesz również wyodrębnić z nich dodatkowe informacje w postaci kodu stanu. Pełną listę kodów stanu znajdziesz w artykule Kody stanu i ich zastosowania w gRPC.

Java

Możesz wyodrębnić kod stanu gRPC zawierający szczegółowe informacje o błędzie z wywołania TripUpdateError zwróconego z onTripUpdateError().

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

Kotlin

Możesz wyodrębnić kod stanu gRPC zawierający szczegółowe informacje o błędzie z wywołania TripUpdateError zwróconego z onTripUpdateError().

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

Swift

Element NSError zostaje wywołany ponownie za 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
    ...
  }
}

Objective-C

Element NSError zostaje wywołany ponownie za 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;
    ...
  }
}

Zinterpretuj kody stanu

Kody stanu obejmują 2 rodzaje błędów: błędy związane z serwerem i siecią oraz błędy po stronie klienta.

Błędy serwera i sieci

Poniższe kody stanu dotyczą błędów sieci lub serwera i nie musisz nic robić, aby je rozwiązać. a potem automatycznie je odzyskuje.

Kod stanuOpis
ANULOWANO Serwer przestał wysyłać odpowiedź. Zazwyczaj jest to spowodowane problemem z serwerem.
ANULOWANY Serwer zakończył odpowiedź wychodzącą. Zwykle dzieje się tak, gdy
aplikacja jest wysyłana w tle lub gdy następuje zmiana stanu w aplikacji konsumenckiej
.
PRZERWA
DEADLINE_EXCEEDED Oczekiwanie na odpowiedź serwera trwało zbyt długo.
PRODUKT NIEDOSTĘPNY Serwer był niedostępny. Zazwyczaj jest to spowodowane problemem z siecią.

Błędy klienta

Poniższe kody stanu dotyczą błędów klienta i musisz podjąć działania, aby je usunąć. Pakiet Consumer SDK będzie ponawiać próby odświeżenia podróży, dopóki nie zakończysz udostępniania przejazdu, ale nie przywróci on ustawień, dopóki nie podejmiesz odpowiednich działań.

Kod stanuOpis
INVALID_ARGUMENT Aplikacja konsumenta określiła nieprawidłową nazwę podróży. Nazwa podróży musi mieć format providers/{provider_id}/trips/{trip_id}.
NOT_FOUND Podróż nie została utworzona.
PERMISSION_DENIED Aplikacja konsumenta ma niewystarczające uprawnienia. Ten błąd występuje, gdy:
  • Aplikacja konsumenta nie ma uprawnień
  • Pakiet SDK dla klientów indywidualnych nie jest włączony w projekcie w konsoli Google Cloud.
  • Brakuje tokena JWT lub jest on nieprawidłowy.
  • Token JWT jest podpisany za pomocą identyfikatora podróży, który nie pasuje do żądanej podróży.
RESOURCE_EXHAUSTED Limit zasobów wynosi zero lub tempo przepływu ruchu przekracza limit prędkości.
BEZ UWIERZYTELNIANIA Uwierzytelnianie nie powiodło się z powodu nieprawidłowego tokena JWT. Ten błąd występuje, gdy token JWT jest podpisany bez identyfikatora podróży lub gdy token JWT wygasł.