Maneja errores de SDK de consumidor

El SDK del consumidor envía errores de actualizaciones de viaje a la app para consumidores mediante una devolución de llamada. de atención. El parámetro de devolución de llamada es un tipo de datos que se devuelve en función de la plataforma ( TripUpdateError en Android NSError en iOS).

Extrae códigos de estado

Los errores que se pasan a la devolución de llamada suelen ser errores de gRPC. También puedes y extraer información adicional en forma de código de estado. Para el una lista completa de los códigos de estado, consulta Códigos de estado y su uso en gRPC.

Java

Puedes extraer un código de estado de gRPC que proporcione detalles sobre el error. del TripUpdateError que muestra onTripUpdateError().

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

Kotlin

Puedes extraer un código de estado de gRPC que proporcione detalles sobre el error. del TripUpdateError que muestra onTripUpdateError().

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

Swift

Se vuelve a llamar a NSError en 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

Se vuelve a llamar a NSError en 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;
    ...
  }
}

Cómo interpretar los códigos de estado

Los códigos de estado abarcan dos tipos de errores: errores relacionados con el servidor y la red. errores del cliente.

Errores de servidor y red

Los siguientes códigos de estado son para errores de red o de servidor, y no necesitan tomar medidas para resolverlos. El SDK de consumidor automáticamente se recupera de ellos.

Código de estadoDescripción
ABORTED El servidor dejó de enviar la respuesta. Por lo general, esto se debe a un en el servidor.
CANCELADO El servidor finalizó la respuesta saliente. Normalmente, ocurre cuando
la app se envía a segundo plano o cuando hay un cambio de estado en la
App para consumidores
/, interrumpido
DEADLINE_EXCEEDED El servidor tardó demasiado en responder.
NO DISPONIBLE El servidor no estaba disponible. Por lo general, esto se debe a una red problema.

Errores de cliente

Los siguientes códigos de estado son para errores de cliente; debes tomar medidas para y resolverlos. El SDK del consumidor continúa reintentando actualizar el viaje hasta que finalizas el recorrido, pero no se recuperará hasta que tomes medidas al respecto.

Código de estadoDescripción
INVALID_ARGUMENT La app para consumidores especificó un nombre de viaje no válido. El nombre del viaje debe sigue el formato providers/{provider_id}/trips/{trip_id}.
NOT_FOUND El viaje nunca se creó.
PERMISSION_DENIED La app para consumidores no tiene permisos suficientes. Este error ocurre en las siguientes situaciones:
  • La app para consumidores no tiene permisos.
  • El SDK del consumidor no está habilitado para el proyecto en Google Cloud. de Cloud.
  • Falta el token JWT o no es válido.
  • El token JWT está firmado con un ID de viaje que no coincide con el viaje solicitado.
RESOURCE_EXHAUSTED La cuota de recursos está en cero, o la frecuencia del flujo de tráfico supera el límite de velocidad.
UNAUTHENTICATED Falló la autenticación de la solicitud debido a un token JWT no válido. Esta ocurre cuando el token JWT se firma sin un ID de viaje o cuando el token JWT caduque.