Gestire gli errori dell'SDK consumer

L'SDK consumer invia gli errori di aggiornamento della corsa all'app consumer utilizzando un meccanismo di callback. Il parametro di callback è un tipo restituito specifico della piattaforma ( TripUpdateError su Android e NSError su iOS).

Estrarre i codici di stato

Gli errori passati al callback sono in genere errori gRPC dai quali puoi anche estrarre ulteriori informazioni sotto forma di codice di stato. Per l'elenco completo dei codici di stato, consulta la pagina Codici di stato e loro utilizzo in gRPC.

Java

Puoi estrarre un codice di stato gRPC che fornisce i dettagli sull'errore dall'TripUpdateError restituito da onTripUpdateError().

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

Kotlin

Puoi estrarre un codice di stato gRPC che fornisce i dettagli sull'errore dall'TripUpdateError restituito da onTripUpdateError().

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

Swift

Il numero NSError viene richiamato tra 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

Il numero NSError viene richiamato tra 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;
    ...
  }
}

Interpretare i codici di stato

I codici di stato coprono due tipi di errori: errori relativi al server e alla rete ed errori lato client.

Errori del server e della rete

I seguenti codici di stato riguardano errori di rete o del server e non è richiesta alcuna azione da parte tua per risolverli. dall'SDK consumer viene recuperato automaticamente.

Codice di statoDescrizione
INTERROTTO Il server ha smesso di inviare la risposta. Di solito questo problema è causato da un problema del server.
CANCELLATO Il server ha terminato la risposta in uscita. Questo accade normalmente quando
l'app viene inviata in background o quando si verifica un cambiamento di stato nell'app consumer
.
INTERROTTO
DEADLINE_EXCEEDED Il server ha impiegato troppo tempo per rispondere.
UNAVAILABLE Il server non era disponibile. Di solito questo problema è causato da un problema di rete.

Errori client

I seguenti codici di stato riguardano gli errori del client e devi intervenire per risolverli. L'SDK consumer continua a riprovare ad aggiornare il percorso fino al termine della condivisione, ma il recupero non verrà ripristinato finché non intervieni.

Codice di statoDescrizione
INVALID_ARGUMENT L'app consumer ha specificato un nome della corsa non valido. Il nome della corsa deve essere nel formato providers/{provider_id}/trips/{trip_id}.
NOT_FOUND Il viaggio non è mai stato creato.
PERMISSION_DENIED L'app consumer non ha autorizzazioni sufficienti. Questo errore si verifica quando:
  • L'app consumer non dispone delle autorizzazioni
  • L'SDK consumer non è abilitato per il progetto nella console Google Cloud.
  • Token JWT mancante o non valido.
  • Il token JWT è firmato con un ID corsa che non corrisponde alla corsa richiesta.
RESOURCE_EXHAUSTED La quota delle risorse è pari a zero o la frequenza del flusso di traffico supera il limite di velocità.
NON AUTENTICATO La richiesta non è riuscita a eseguire l'autenticazione a causa di un token JWT non valido. Questo errore si verifica quando il token JWT viene firmato senza un ID di viaggio o quando il token JWT è scaduto.