Processar erros do SDK do consumidor
O SDK do consumidor envia erros de atualização de viagem ao app do consumidor usando um mecanismo de callback. O parâmetro de callback é um tipo de retorno específico da plataforma (TripUpdateError
no Android e NSError
no iOS).
Extrair códigos de status
Os erros transmitidos ao callback costumam ser do gRPC, e também é possível extrair mais informações deles na forma de um código de status. Para ver a lista completa dos códigos de status, consulte Códigos de status e seu uso no gRPC.
Java
Extraia um código de status do gRPC que forneça detalhes sobre o erro
do TripUpdateError
retornado de onTripUpdateError()
.
// Called when there is a trip update error.
@Override
public void onTripUpdateError(TripInfo tripInfo, TripUpdateError error) {
Status.Code code = error.getStatusCode();
}
Kotlin
Extraia um código de status do gRPC que forneça detalhes sobre o erro
do TripUpdateError
retornado de onTripUpdateError()
.
// Called when there is a trip update error.
override fun onTripUpdateError(tripInfo: TripInfo, error: TripUpdateError) {
val code = error.getStatusCode()
}
Swift
O NSError
é chamado de volta no 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
O NSError
é chamado de volta no 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;
...
}
}
Interpretar códigos de status
Os códigos de status abrangem dois tipos de erros: erros relacionados ao servidor e à rede e erros do lado do cliente.
Erros de servidor e de rede
Os códigos de status a seguir são para erros de rede ou de servidor, e você não precisa fazer nada para resolvê-los. O SDK para consumidor se recupera delas automaticamente.
Código de status | Descrição |
---|---|
ABORTED | O servidor parou de enviar a resposta. Isso normalmente é causado por um problema no servidor. |
CANCELADA | O servidor encerrou a resposta enviada. Isso normalmente
acontece quando
o app é enviado para o segundo plano ou quando há uma mudança de estado no app do consumidor . |
INTERRUPTED | |
DEADLINE_EXCEEDED | O servidor demorou muito para responder. |
UNAVAILABLE | O servidor não estava disponível. Isso normalmente é causado por um problema na rede. |
Erros do cliente
Os códigos de status a seguir são para erros do cliente, e você precisa tomar medidas para resolvê-los. O SDK para consumidores continuará tentando atualizar a viagem até você encerrar o compartilhamento, mas não será recuperado até que você tome providências.
Código de status | Descrição |
---|---|
INVALID_ARGUMENT | O app do consumidor especificou um nome de viagem inválido. O nome da viagem precisa seguir o formato providers/{provider_id}/trips/{trip_id} .
|
NOT_FOUND | A viagem não foi criada. |
PERMISSION_DENIED | O app para o consumidor não tem permissões suficientes. Esse erro ocorre quando:
|
RESOURCE_EXHAUSTED | A cota de recursos está em zero ou a taxa de fluxo de tráfego excede o limite de velocidade. |
UNAUTHENTICATED | A autenticação da solicitação falhou devido a um token JWT inválido. Esse erro ocorre quando o token JWT é assinado sem um ID de viagem ou quando o token JWT expirou. |