SDK-Fehler verarbeiten

Das Consumer SDK sendet über einen Callback-Mechanismus Fehler bei der Fahrtaktualisierung an die Nutzer-App. Der Callback-Parameter ist ein plattformspezifischer Rückgabetyp (TripUpdateError unter Android und NSError unter iOS).

Statuscodes extrahieren

Die an den Callback übergebenen Fehler sind in der Regel gRPC-Fehler. Sie können auch zusätzliche Informationen in Form eines Statuscodes daraus extrahieren. Eine vollständige Liste der Statuscodes finden Sie unter Statuscodes und ihre Verwendung in gRPC.

Java

Sie können einen gRPC-Statuscode mit Details zum Fehler aus dem von onTripUpdateError() zurückgegebenen TripUpdateError extrahieren.

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

Kotlin

Sie können einen gRPC-Statuscode mit Details zum Fehler aus dem von onTripUpdateError() zurückgegebenen TripUpdateError extrahieren.

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

Swift

NSError wird in tripModel(_:didFailUpdateTripWithError:) wieder aufgerufen.

// 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

NSError wird in tripModel:didFailUpdateTripWithError: wieder aufgerufen.

// 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;
    ...
  }
}

Statuscodes interpretieren

Statuscodes decken zwei Arten von Fehlern ab: server- und netzwerkbezogene Fehler und clientseitige Fehler.

Server- und Netzwerkfehler

Die folgenden Statuscodes beziehen sich entweder auf Netzwerk- oder Serverfehler. Sie müssen nichts weiter unternehmen, um sie zu beheben. Das Consumer SDK führt die Wiederherstellung automatisch durch.

StatuscodeBeschreibung
ABORTED Der Server sendet keine Antwort mehr. Dies wird normalerweise durch ein Serverproblem verursacht.
CANCELLED Der Server hat die ausgehende Antwort beendet. Dies ist normalerweise der Fall, wenn
die Anwendung in den Hintergrund gesendet wird oder wenn sich der Status in der
-Nutzeranwendung ändert.
INTERRUPTED
DEADLINE_EXCEEDED Der Server hat zu lange zum Antworten benötigt.
UNAVAILABLE Der Server war nicht verfügbar. Dies wird normalerweise durch ein Netzwerkproblem verursacht.

Clientfehler

Die folgenden Statuscodes beziehen sich auf Clientfehler. Sie müssen Maßnahmen ergreifen, um sie zu beheben. Das Consumer SDK versucht weiterhin, die Fahrt zu aktualisieren, bis Sie die Freigabe des Kaufprozesses beenden. Es wird jedoch erst wiederhergestellt, wenn Sie Maßnahmen ergreifen.

StatuscodeBeschreibung
INVALID_ARGUMENT Die Nutzer-App hat einen ungültigen Fahrtnamen angegeben. Der Fahrtname muss das Format providers/{provider_id}/trips/{trip_id} haben.
NOT_FOUND Die Reise wurde nie erstellt.
PERMISSION_DENIED Die Berechtigungen der Nutzer-App reichen nicht aus. Dieser Fehler tritt in folgenden Fällen auf:
  • Die Nutzer-App hat keine Berechtigungen
  • Das Consumer SDK ist in der Google Cloud Console nicht für das Projekt aktiviert.
  • Das JWT-Token fehlt oder ist ungültig.
  • Das JWT-Token ist mit einer Fahrt-ID signiert, die nicht mit der angeforderten Fahrt übereinstimmt.
RESOURCE_EXHAUSTED Das Ressourcenkontingent beträgt null oder die Traffic-Flussrate überschreitet die Höchstgeschwindigkeit.
NICHT AUTHENTIFIZIERT Die Authentifizierung der Anfrage ist aufgrund eines ungültigen JWT-Tokens fehlgeschlagen. Dieser Fehler tritt entweder auf, wenn das JWT-Token ohne Fahrt-ID signiert wird oder wenn das JWT-Token abgelaufen ist.