Fehler beim Consumer SDK beheben

Das Consumer SDK sendet mithilfe eines Callback-Mechanismus Fehler bei Fahrtaktualisierungen an die Nutzer-App. Der Callback-Parameter ist ein plattformspezifischer Rückgabetyp (TripUpdateError für Android und NSError für iOS).

Statuscodes werden extrahiert

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

Java

Sie können einen gRPC-Statuscode extrahieren, der Details zum Fehler aus der von onTripUpdateError() zurückgegebenen TripUpdateError enthält.

// 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 extrahieren, der Details zum Fehler aus der von onTripUpdateError() zurückgegebenen TripUpdateError enthält.

// 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:) zurückgerufen.

// 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: zurückgerufen.

// 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 umfassen zwei Arten von Fehlern: Server- und Netzwerkfehler und clientseitige Fehler.

Server- und Netzwerkfehler

Die folgenden Statuscodes beziehen sich entweder auf Netzwerk- oder Serverfehler und müssen nicht behoben werden. Die Wiederherstellung erfolgt automatisch durch das Consumer SDK.

StatuscodeBeschreibung
ABORTED Der Server sendet keine Antwort mehr. Dies wird normalerweise durch ein Serverproblem verursacht.
CANCELLED Der Server hat die ausgehende Antwort beendet. Dies geschieht normalerweise, wenn
die App in den Hintergrund geschickt wird oder wenn sich der Status in der
Consumer-App ändert.
INTERRUPTED
DEADLINE_EXCEEDED Die Antwort des Servers hat zu lange gedauert.
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 der Journey beenden. Es wird jedoch erst wiederhergestellt, wenn Sie Maßnahmen ergreifen.

StatuscodeBeschreibung
INVALID_ARGUMENT In der Consumer-App ist ein ungültiger Fahrtname 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 Verbraucher-App reichen nicht aus. Dieser Fehler tritt in folgenden Fällen auf:
  • Die Verbraucher-App hat keine Berechtigungen
  • Das Consumer SDK ist in der Google Cloud Console für das Projekt nicht 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 Trafficfluss-Rate überschreitet die Geschwindigkeitsbegrenzung.
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.