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 di restituzione specifico della piattaforma (TripUpdateError su Android e NSError su iOS).

Estrazione dei 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 Codici di stato e loro utilizzo in gRPC.

Java

Puoi estrarre un codice di stato gRPC che fornisce dettagli sull'errore dal 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 dettagli sull'errore dal TripUpdateError restituito da onTripUpdateError().

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

Swift

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

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;
    ...
  }
}

Interpretazione dei codici di stato

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

Errori relativi al server e alla rete

I seguenti codici di stato sono relativi a errori di rete o del server e non devi intraprendere alcuna azione per risolverli. L'SDK per il consumatore li ripristina automaticamente.

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

Errori client

I seguenti codici di stato sono relativi agli errori del client ed è necessaria un'azione da parte tua per risolverli. L'SDK Consumer continua a riprovare ad aggiornare il percorso fino al termine della condivisione, ma non verrà ripristinato finché non intervieni.

Codice di statoDescrizione
INVALID_ARGUMENT L'app consumer ha specificato un nome di viaggio non valido. Il nome della corsa deve rispettare il 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 oppure la velocità del flusso di traffico supera il limite di velocità.
NON AUTENTICATO L'autenticazione della richiesta non è riuscita a causa di un token JWT non valido. Questo errore si verifica quando il token JWT viene firmato senza un ID corsa o quando il token JWT è scaduto.