Processar erros do SDK do consumidor

O SDK para o consumidor envia erros de atualização de viagem ao aplicativo do consumidor usando um callback mecanismo de atenção. O parâmetro 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 são normalmente erros gRPC, e também é possível extrair informações adicionais deles na forma de um código de status. Para o lista completa de códigos de status, consulte Códigos de status e o uso deles no gRPC (em inglês).

Java

Extraia um código de status gRPC que forneça detalhes sobre o erro. do valor de 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 gRPC que forneça detalhes sobre o erro. do valor de 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ê e nenhuma ação será necessária para resolvê-los. O SDK para o consumidor automaticamente se recupera delas.

Código de statusDescrição
ABORTED O servidor parou de enviar a resposta. Isso é normalmente causado por um um problema no servidor.
CANCELADO O servidor encerrou a resposta enviada. Isso normalmente acontece quando
o aplicativo é enviado para o segundo plano ou quando há uma mudança de estado na
App para o consumidor.
INTERRUPTED
DEADLINE_EXCEEDED O servidor demorou muito para responder.
INDISPONÍVEL O servidor não estava disponível. Isso geralmente é causado por uma conexão de rede problema.

Erros do cliente

Os códigos de status a seguir referem-se a erros do cliente, e você deve tomar medidas para e resolvê-los. O SDK para consumidores continuará tentando atualizar a viagem até que você encerrar o compartilhamento da jornada, mas ele não se recuperará até que você realize uma ação.

Código de statusDescrição
INVALID_ARGUMENT O aplicativo do consumidor especificou um nome de viagem inválido. O nome da viagem deve siga 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:
  • O app para o consumidor não tem permissões
  • O SDK do consumidor não está ativado para o projeto no Google Cloud do Cloud.
  • O token JWT está ausente ou é inválido.
  • O token JWT é assinado com um ID de viagem que não corresponde ao viagem solicitada.
RESOURCE_EXHAUSTED A cota de recursos está em zero ou a taxa do fluxo de tráfego excede a limite de velocidade.
UNAUTHENTICATED A autenticação da solicitação falhou devido a um token JWT inválido. Isso ocorre quando o token JWT é assinado sem um ID de viagem ou quando o token JWT tiver expirado.