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 stato | Descrizione |
---|---|
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 stato | Descrizione |
---|---|
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:
|
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. |