Gestire gli errori dell'SDK consumer

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

Estrazione dei codici di stato

Gli errori trasmessi 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 dall'oggetto 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 dall'oggetto 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;
    ...
  }
}

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 di rete

I seguenti codici di stato si riferiscono a errori di rete o del server e non è necessario alcun intervento da parte tua per risolverli. L'SDK consumer esegue automaticamente il ripristino.

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

Errori client

I seguenti codici di stato si riferiscono a errori del client ed è necessario intervenire per risolverli. L'SDK Consumer continuerà a eseguire i tentativi di aggiornamento del viaggio fino a quando non termini la condivisione, ma non verrà recuperato 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}.
NON_TROVATO 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 di autorizzazioni
  • L'SDK consumer non è abilitato per il progetto in Google Cloud Console.
  • Token JWT mancante o non valido.
  • Il token JWT è firmato con un ID corsa che non corrisponde alla corsa richiesta.
RISORSA_ESHAUSTED La quota di risorse è pari a zero o la velocità del flusso di traffico supera il limite di velocità.
NON AUTENTICATA 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 di corsa o quando è scaduto.