SDK-Fehler verarbeiten

Das Consumer SDK sendet Fehler bei der Fahrtaktualisierung mithilfe eines Callbacks an die Nutzer-App. Mechanismus zur Verfügung. Der Callback-Parameter ist ein plattformspezifischer Rückgabetyp ( TripUpdateError auf Android und NSError auf iOS-Geräten).

Statuscodes extrahieren

Die an den Callback übergebenen Fehler sind in der Regel gRPC-Fehler. Sie können auch um zusätzliche Informationen in Form eines Statuscodes zu extrahieren. Für die vollständige Liste der Statuscodes siehe Statuscodes und ihre Verwendung in gRPC

Java

Sie können einen gRPC-Statuscode mit Details zum Fehler extrahieren. aus der TripUpdateError, die von onTripUpdateError() zurückgegeben wurden.

// 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 extrahieren. aus der TripUpdateError, die von onTripUpdateError() zurückgegeben wurden.

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

Server- und Netzwerkfehler

Die folgenden Statuscodes beziehen sich entweder auf Netzwerk- oder Serverfehler, und Sie Sie müssen nichts weiter unternehmen, um sie zu lösen. Das Consumer SDK wird automatisch von ihnen erholt.

StatuscodeBeschreibung
ABORTED Der Server sendet keine Antwort mehr. Dies ist normalerweise auf eine Serverproblem.
CANCELLED Der Server hat die ausgehende Antwort beendet. Dies ist normalerweise passiert, wenn
wird die App in den Hintergrund verschoben oder wenn sich eine Statusänderung im
Nutzer-App.
INTERRUPTED
DEADLINE_EXCEEDED Der Server hat zu lange zum Antworten benötigt.
UNAVAILABLE Der Server war nicht verfügbar. Die Ursache hierfür ist normalerweise ein Netzwerk Problem.

Clientfehler

Die folgenden Statuscodes beziehen sich auf Clientfehler und Sie müssen Maßnahmen ergreifen, und sie zu lösen. Das Consumer SDK versucht so lange, die Fahrt zu aktualisieren, Teilen der Reise beenden, aber dies wird erst erholt, wenn Sie die entsprechenden Maßnahmen ergreifen.

StatuscodeBeschreibung
INVALID_ARGUMENT Die Nutzer-App hat einen ungültigen Fahrtnamen angegeben. Der Name der Reise muss verwenden Sie das Format providers/{provider_id}/trips/{trip_id}.
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 für das Projekt in der Google Cloud nicht aktiviert Konsole.
  • Das JWT-Token fehlt oder ist ungültig.
  • Das JWT-Token ist mit einer Fahrt-ID signiert, die nicht mit der angefragte Fahrt.
RESOURCE_EXHAUSTED Das Ressourcenkontingent ist null oder die Traffic-Flussrate überschreitet die die Geschwindigkeitsbegrenzung zu verwenden.
NICHT AUTHENTIFIZIERT Die Authentifizierung der Anfrage ist aufgrund eines ungültigen JWT-Tokens fehlgeschlagen. Dieses Fehler tritt auf, wenn das JWT-Token ohne Fahrt-ID signiert wurde oder Wenn das JWT-Token abgelaufen ist.