Maneja errores de SDK de consumidor
El SDK del consumidor envía errores de actualizaciones de viaje a la app para consumidores a través de un mecanismo de devolución de llamada. El parámetro de devolución de llamada es un tipo de datos que se muestra específico de la plataforma (TripUpdateError
en Android y NSError
en iOS).
Extrae códigos de estado
Los errores que se pasan a la devolución de llamada suelen ser errores de gRPC y también puedes extraer información adicional de ellos en forma de código de estado. Para obtener la lista completa de 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, y errores del cliente.
Errores de servidor y red
Los siguientes códigos de estado son para errores de red o de servidor y no es necesario que realices ninguna acción para resolverlos. El SDK del consumidor se recupera automáticamente de ellos.
Código de estado | Descripción |
---|---|
ABORTED | El servidor dejó de enviar la respuesta. Por lo general, esto se debe a un problema del servidor. |
CANCELADA | El servidor finalizó la respuesta saliente. Por lo general, esto sucede cuando la app se envía a segundo plano o cuando se produce un cambio de estado en la app para consumidores de . |
/, interrumpido | |
DEADLINE_EXCEEDED | El servidor tardó demasiado en responder. |
UNAVAILABLE | El servidor no estaba disponible. Por lo general, esto se debe a un problema de red. |
Errores de cliente
Los siguientes códigos de estado son para errores de clientes y debes tomar medidas para resolverlos. El SDK del consumidor continúa reintentando actualizar el viaje hasta que dejes de compartirlo, pero no se recuperará hasta que tomes medidas al respecto.
Código de estado | Descripción |
---|---|
INVALID_ARGUMENT | La app para consumidores especificó un nombre de viaje no válido, que debe seguir 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:
|
RESOURCE_EXHAUSTED | La cuota de recursos está en cero o la tasa de 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. Este error ocurre cuando el token JWT se firma sin un ID de viaje o cuando el token JWT caducó. |